Некоммерческий удостоверяющий центр Let's Encrypt, контролируемый сообществом и предоставляющий сертификаты безвозмездно всем желающим, объявил о переходе на использование NTP-сервера ntpd-rs, написанного на языке Rust с оглядкой на обеспечение безопасности и стабильности. Проект распространяется под лицензиями Apache 2.0 и MIT, полностью поддерживает протоколы NTP и NTS (Network Time Security) на уровне клиента и сервера, и может использоваться в качестве замены NTP-серверам chrony, ntpd и NTPsec...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=61435
> заработан в рамках проекта Prossimo, развивающегося под эгидой организации ISRG (Internet Security Research Group), которая является учредителем проекта Let's EncryptВот вся суть новости. Там эти люди хотят всё навелосипедить, не только что-то ерундовое типа ntp-сервера.
ntp-сервер не такая ерунда как тебе кажется. Но что-то мне подсказывает что случилась подмена понятий и ничего кроме клиента летсшиткрипт не использует.А сервер как обычно умеет ноль протоколов железок и не вполне совместим с обычными серверами.
Ну да, не совсем ерунда, но это не zlib или кернел.
zlib по идее - как раз образцово-показательное место где можно применить хруст.
Ни разу не работа с устройствами и ни разу не про ручное управление памятью.
Сплошные операции над структурами. И несложные.Но что-то опять помешало показать всем "как правильно".
> Но что-то опять помешало показать всем "как правильно".Ну так показал бы им как надо!
Взял бы и реализовал все "несложные операции со структурами".
Но нет, ты ноешь и указываешь кому и чего делать.p.s. уже делают реализацию з-либа на раст opennet.ru/opennews/art.shtml?num=60970
p.p.s ты даже не искал ничего по этому поводу, фу таким быть
p.p.p.s давай лучше заводи шарманку про пачпорта и их цвет, хоть не так позориться будешь
Задай себе простой вопрос: ну и нах это наху надо? :)
ntp-серверов и так вагон с вагонеткой, на всех известных в Ойкумене ёзыках, и заметь - есть даже сейяас - годные :)
> Ну так показал бы им как надо!да у меня уже есть один zlib, как-то работает.
> p.s. уже делают реализацию з-либа на раст
CoC и readme.md поди успешно уже написали?
> да у меня уже есть один zlib, как-то работает.'как-то' - это отличное определение как оно 'работает'
opennet.ru/opennews/art.shtml?num=56918
"Примечательно, что патч с исправлением уязвимости был предложен ещё в 2018 году, но разработчики не обратили на него внимания"
"This bug was reported by Danilo Ramos of Eideticom, Inc. It has lain in wait 13 years before being found!"Но ты можешь продолжать пользоваться. Это нормально.
Некоторым людям вообще многое нормально и они являются просто ходячими хранилищами терпениума.
"В реальных условиях совершение атаки по-прежнему оценивается как маловероятное"потому что проявляется при параметрах которые можно выставить только вручную внутри кода вызывающего zlib. Причем не для распаковки даже, а для упаковки данных - часто ли ты пакуешь чужие левые данные и зачем ты это делаешь?
Все что надо знать о белках-истеричках.
> "Примечательно, что патч с исправлением уязвимости был предложен ещё в 2018 году, но разработчики
> не обратили на него внимания"потому что не было там уже никаких разработчиков. Новые версии не выпускались десять лет, вся разработка ушла в несовместимую zlib-ng (которая оказалась нафиг не нужна никому)
https://www.youtube.com/watch?v=mvzHQdCLkOY
> Но что-то мне подсказывает что случилась подмена понятий и ничего кроме клиента летсшиткрипт не используетЧисто по ощущениям, да? На кончиках пальцев, интуитивно. Угу. Ну я тебе по секрету скажу, ты только с табуретки не упади: использует и клиент, и сервер, и ntp апплаенсы чтобы прямо из космоса точное время получать (ваще чума! Прикинь, из космоса!). Такие дела. Я прямо сейчас спросил специально для тебя у одного из админов LE.
>апплаенсы чтобы прямо из космоса точное время получать (ваще чума! Прикинь, из космоса!).Как вас таких делают? Может облучают чем? :-(
Если у тебя есть смартфон - ПРИКИНЬ он тоже ... того ... "Прикинь, из космоса!"(С) :-D
Прикинь? Я каждый раз как об этом думаю — всякий раз удивляюсь! Как оно там работает всё в космосе? Там же даже дышать нечем! А оно трудится всё это вот без выходных и перерывов на обед. Одно-одинёшенько висит на орбите и облучает.
>Прикинь? Я каждый раз как об этом думаю — всякий раз удивляюсь!Ох Ё! 8-о
PS: точна - облучают! :-D
Не все устали восхищаться жизнью и удивитеным устройством вселенной. ¯\_(ツ)_/¯
Завидовать будем! (С) ИВС
:)
А потом я не поленился зайти на страничку чудо-прожекта - и там...там-тадам.
> А сервер как обычно умеет ноль протоколов железок и не вполне совместим с обычными серверами.пишутъ!
А аплаенс твой - это линуксная коробка с gps'ом внутри. И ntpd (даже не s). Вот его клиентом эта хрустоподелка и работает. На это ее хватает.
Поскольку вряд ли админ LE просто напи3дюнькал тебе - рискну сделать еще и выводы о квалификации большинства админов LE. Ага, снова чисто по ощущениям, на кончиках пальцев. И ведь - опять угадаю же ж.
Мне дедушка как-то в детстве говорил: если ты вошёл в комнату, и тебе кажется что кто-то из присутствующих муд@к, то возможно так и есть. А если кажется, что все муд@ки, то точно муд@к ты сам. Смотрю на тебя и понимаю: прав был старый моряк.
> Мне дедушка как-то в детстве говорил: если ты вошёл в комнату, и
> тебе кажется что кто-то из присутствующих муд@к, то возможно так и
> есть. А если кажется, что все муд@ки, то точно муд@к ты
> сам. Смотрю на тебя и понимаю: прав был старый моряк.Тоооочно. Правда он-то предлагал тебе призадуматься не ты ли сам этот самый вот. Но все впустую...
Всё так, я призадумался и жизнь пошла куда ровнее. Жаль, что у тебе никто вовремя не посоветовал.
> Всё так, я призадумалсяно было нечем?
Повторяю - дедуля твой тебе на СЕБЯ смотреть советовал. Но ты совету не внял и пришел учить жить меня.
> прав был старый моряк.боцманом был, небось?
>> прав был старый моряк.
> боцманом был, небось?Да может и капитаном был. Но внучок оказался годен только в трюмные крысы.
Заметь что он пришел со своим ценным знанием в ответ на вполне технический комментарий. Но на техническую тему ему ответить ровно нечем, поскольку даже прочитать ту самую страничку что я прочел - ну надо во-первых хоть немножко понимать тему, а не слышать звон...
лично я считаю что раст отменный выбор с оглядкой на будущее
В смысле для отмены.
> с оглядкой на будущеес оглядкой на оглядывающихся
Оглядываться на будущее - это типа как смотреть в завтрашний день?
Вопрос по теме: я программирую на расте уже полгода, и уже научился писать безопасные программы. Теперь хочу поднять планку и начать писать супербезопасные программы. Скажите, поддерживает ли раст супербезопасность? Если нет, то когда планируется добавить поддержку супербезопасности? Чтобы было не просто безопасно, а супербезопасно.
> Скажите, поддерживает ли раст супербезопасность?Её очень легко имплементировать: нужно переписать Rust на Rust (чтобы не зависеть от llvm и т.д.). Можете приступать.
> Вопрос по теме: я программирую на расте уже полгода, и уже научился
> писать безопасные программы. Теперь хочу поднять планку и начать писать супербезопасные
> программы. Скажите, поддерживает ли раст супербезопасность? Если нет, то когда планируется
> добавить поддержку супербезопасности? Чтобы было не просто безопасно, а супербезопасно.Конечно можно, мой друг-по-ржавчине!
Просто открываешь тему "Создан консорциум для разработки высоконадёжных систем на Rust "
opennet.ru/opennews/art.shtml?num=61362
и окрываешь все сылочки которые там есть!Думаю больше всего тебя заинтересует verus - инструментарий для проверки корректности кода.
github.com/verus-lang/verus
Штука которая проверяет соответсвия кода спецификации.И да пребудет с тобой боров-чеккер и баезопастный код!
пусть systemd перепишут теперь
Нинини!
Да, мы подождём сколько потребуется.
>пусть systemd перепишут теперьГениально!!!
> OpenSSL на Rustlsv0.23.10
> задействовать Hickory
v0.24.1
> Nginx заменить на River
v0.2.1
> использовать sudo-rs
v0.2.2
Алло, да, деплойте это всё в проде. Да, прямо на сервер, генерирующий 4 миллиона сертификатов в день.
што, што может тут пойти не так?!
Уже пошло, или к чему эти причитания?
О, ты наверное из тех кто любит наяривать на циферки?
Надо было сразу начинать с версии v10.0.1 чтобы было солидно?Если они деплоят в прод, наверное надежнеости им хватает.
Если они нафакапили - то будут разгребать последствия.
Нееее, последствия будешь разгребать ты. Потому что Когда LE сгенерит для тебя сертификат со сроком действия с 01.01.1970 00:00:00 до 31.01.1970 23:59:59, то твой, а не чей-то, сайт перестанет открываться у хомячков.
Ну я думаю люди проверяют сертефикаты, которые им нагенерили. Проверяют же? (с)
Во-вторых - никто меня не заставлял идти именно к ним, а не к какой-то другой генерилке сертификатов.
Особенно если он еще и бесплатный был.Но если я за него денег заплатил, то возможно пойду искать более надежного поставщика.
В принципе как с любым товаром.
> люди проверяют сертефикатыВот именно этого и не надо. Надо чтобы компьютер проверял. А то будет как с джаббер.ру.
> Ну я думаю люди проверяют сертефикаты, которые им нагенерили. Проверяют же? (с)Все стотыщ вчера ставших для тебя обязательными (и при этом нахрен ненужных - но разработчики о тебе позаботились и без них ничего не работает) - проверяешь же ж?!
> Во-вторых - никто меня не заставлял идти именно к ним, а не
> к какой-то другой генерилке сертификатов.а то их ведь много, тыщи ведь их, и одна (вторая) не заблокировала пользователей с неправильным цветом паспорта?
> Особенно если он еще и бесплатный был.
особенно. Тут ты бы мог начать что-то подозревать, но это надо иметь мозги.
> Но если я за него денег заплатил, то возможно пойду искать более
> надежного поставщика.
> В принципе как с любым товаром.и как с любым товаром, демпинг (на дядины деньги) убивает конкуренцию насмерть. А особенно в местах где конкуренция и так искусственно осложнена до полной невозможности кому-то лишнему поконкурировать (как там "честный Ахмед" поживает? И что случилось со startssl?)
Поэтому пойти тебе, считай, некуда.
> убивает конкуренцию насмертьКакую такую конкуренцию? Её нет и быть не может. Любой честный Ахмед может открыть свой УЦ хоть вчера, и не надо даже разрешения спрашивать. Да чего там Ахмед, у меня самого аж два УЦ есть, и оба сертификаты сотнями в сутки выписывают.
> что случилось со startssl?
То же, что и с другими: не смогли в бизнес. Бывает, не первые и не последние.
>> убивает конкуренцию насмерть
> Какую такую конкуренцию? Её нет и быть не может. Любой честный Ахмедлолшта?
> может открыть свой УЦ хоть вчера, и не надо даже разрешения
но никогда не сможет добавить его в trusted списки гугля и мразилы.
Потому что их условия - принципиально невыполнимы (и никто из нынешних их и не выполнял, всех включили чохом, кроме может самого LE под которого их и высосали из пальца (и щедро отсыпали денег - тоннами). Особенно там был хорош требуемый аудит левой васянской конторой, у которой на момент публикации сайт не поддерживал https.)> спрашивать. Да чего там Ахмед, у меня самого аж два УЦ
> есть, и оба сертификаты сотнями в сутки выписывают.жаль что никем, кроме твоего локалхоста, эти сертификаты не считаются достоверными.
>> что случилось со startssl?
> То же, что и с другими: не смогли в бизнес. Бывает, невот там выше - разьве что-то про бизнес? Бизнес-то они как раз смогли. Они не смогли в коррупционную или финансируемую спецслужбами (впрочем, вероятнее всего - и то и другое) схемку.
Откуда у LE деньги на их альтернативно-одаренных админов берутся и оплату электричества? Не говоря уже про все приседания и ужимки для соблюдения ритуала включения в список (там один только аудит этими вот васянами стоит миллион) ГДЕ тут - бизнес за счет которого оно должно окупиться хотя бы в ноль? А нету его.
Как нету к ним и претензий что они пачками выдают поддельные сертификаты (привет jabber.ru). Вот к startssl (который ни одного не выдал - "но аппарат - есть!") - сразу нашлись, прям настолько что им даже не дали возможности что-то ответить.
Да как-то пользовались в свое время nginx версий 0.x.x и всё было хорошо. Вообще никакой разницы не было после смены версионирования на 1.х.
Джиттер увеличился.
Если что где и увеличилось, так это количество газа в телах хейтеров.
Зачем? Есть же erlang.
чатгопота не может в эрланг. Потому что на стековерфлове про него ничего нету.
>Потому что на стековерфлове про него ничего нетуВо-первых, есть и много. Тебя же там не забанили, чтобы самому убедиться?
Во-вторых, насколько мне известно, функциональные ЯП всегда будут проигрывать в скорости работы императивным ЯП в силу своих архитектурных особенностей. Разумеется, мы говорим о компилируемых ЯП, а не вообще обо всех известных.
В-третьих, все, кто не использует эрланг - это чатгопота? Может, обоснуешь как-то? Или для этого (обоснования) мозги надо иметь?
> функциональные ЯП всегда будут проигрывать в скорости работы императивным ЯП в силу своих архитектурных особенностейВовсе нет. GHC с llvm-бекендом нередко генерирует аналогичный по производительности тем же плюсам код, если не превосходящий.
Транслирую то, что когда-то где-то читал. Вот что-то типа такого:
https://devm.io/programming/disadvantages-of-purely-function...
> Зачем? Есть же erlang.А зачем нужен erlang?
Он так и не взлетел, оставшись в узкой нише телекомов.
Где искать на него разрабов?
я бы пошел но работы нет
потому сижу пилю гексагональные микросурвисы на жявке
люди ищущие "разрабов на ..." всегда найдут только дешевых т-пых рабов.Люди ищущие разработчиков - способных изучать новое, а не только копипастить - найдут и для эрланга (да, телекомы как-то вот - находят)
Но дорого. Проще поймать десяток рабов.
Очевидно, что ты никогда не занимался поиском персонала, раз несёшь подобную чушь.Обычно (часто) разработчик нужен был ещё вчера. А ты предлагаешь его найти, проверить на вменяемость как-то (до сих пор надёжных способов не придумали, каждый костылит, как умеет), обучить, и потом надеяться, что будет годный результат. Действительно, на выходе получится дорого, как ты и сказал. Но совершенно не факт, то, что тебе действительно надо.
> Очевидно, что ты никогда не занимался поиском персонала, раз несёшь подобную чушь.о, ныкаемся, ныкаемся - hr менеджер в треде!
> Обычно (часто) разработчик нужен был ещё вчера.
до этого-то гуталиновая фабрика торговала - гуталином. А со вчерашнего дня - смотри-ка - заделалась разработчиком аналогов не имеющего софта. Дааа, тебе не позавидуешь.
> А ты предлагаешь его найти, проверить на вменяемость как-то (до сих пор надёжных способов не
> придумалидля hr-менеджеров-то - да.
Поэтому пойди и налови дешевых рабов. Описание вакансии составит чатгопота, можешь не вникать. (Все так делают.)
А так - обычно, в таких местах где нужен таки не раб а разработчик - спрашивают - где он работал до того и что там писал, и чем закончилось. Потому что если не в конторе рога и копыта, непонятно что и фейлом, значит таки умеет кодить. Но это не hr должен делать - а то ему ж соврут, недорого возьмут, а уточняющие вопросы он задать не сумеет.
> Действительно, на выходе получится дорого, как ты и сказал. Но совершенно не факт, то, что тебе
> действительно надо.повысят до hr менеджера и найдут следующего. Собственно, а с дешовыми рабами-то все то же ж самое. Хоронить их живьем под основанием пирамиды сейчас не принято, даже если они не очень справляются с обязанностью копипастить из чатгопоты.
> о, ныкаемся, ныкаемся - hr менеджер в треде!Нет, я не HR-менеджер. Но в отборе кандидатов участвовал не раз. На технической части собеседования.
> до этого-то гуталиновая фабрика торговала - гуталином. А со вчерашнего дня - смотри-ка - заделалась разработчиком аналогов не имеющего софта. Дааа, тебе не позавидуешь.
Снова мимо. Видимо, ты устроился на каком-то госпредприятии или естественной монополии, и о таком понятии, как рынок и высококонкурентная изменчивая среда в жизни не слышал. Так вот, иной раз этот самый рынок меняется ну очень быстро. И чтобы оставаться на плаву, надо бежать изо всех сил, желательно гораздо быстрее конкурентов.
> А так - обычно, в таких местах где нужен таки не раб а разработчик - спрашивают - где он работал до того и что там писал, и чем закончилось.
Причём здесь то, где работал разработчик до его потенциала быстро овладеть новой технологией в приемлемые для бизнеса сроки? Какая тут связь вообще? Ну вот есть у меня знакомый, работает в Мета (которая запрещена в РФ). Очень даже умный хлопец. Но разработчиком я бы его не взял. Почему? Потому что слишком большой новый пласт знаний пришлось бы ему освоить. А время на это освоение-то и нетути. Уже готовый спец нужен.
> Зачем? Есть же erlang.А есть какой-то хорошо зарекомердовавший себя NTP-сервер на эрланге?
Скорее всего (зуб не дам) нет. Почему? Так вон же выше некто нах. всё объяснил - потому что чатгопота не умеет в эрланг. Напрашивается логический вывод, что чатгопота умеет только в Си. Почему такой вывод? Потому что смотри, сколько кода написано на Си, а сколько на эрланге. Конечно, это всё ущербная логика. Но разве нах-а это когда-нибудь смущало?
> Напрашивается логический вывод, что чатгопота умеет только в Си. Почему такойчего вдруг? Очевидно что в .net умеет ничуть не хуже.
> вывод? Потому что смотри, сколько кода написано на Си, а сколько
> на эрланге. Конечно, это всё ущербная логика. Но разве нах-а этоНе вижу ничего ущербного. Именно так все и есть. Нет кода (причем общедоступного) - неоткуда копипастить. Чатгопота разводит ушами и генерирует полный бред.
Еще раз, медленно - она не умеет читать документацию и понимать прочитанное. Она не умеет кодить. Она умеет - правдоподобно бредить похоже на известные ей образцы. Всьо. Чем больше образцов - тем правдоподобнее бред.
>Чем больше образцов - тем правдоподобнее бред.из этого становится понятно что дырени на С никогда не закончатся, потому-что образцов хоть отбавляй и все время генерируюися новые.
> чего вдруг? Очевидно что в .net умеет ничуть не хуже.Судя по популярности .Net, всё-таки хуже. Впрочем, если у тебя есть другие критерии оценки, давай.
> Не вижу ничего ущербного. Именно так все и есть. Нет кода (причем общедоступного) - неоткуда копипастить. Чатгопота разводит ушами и генерирует полный бред.
То есть, код на Си пишет чатгопота? А, ну ок, если так. Я тогда тебя неправильно понял изначально.
> Еще раз, медленно - она не умеет читать документацию и понимать прочитанное. Она не умеет кодить. Она умеет - правдоподобно бредить похоже на известные ей образцы. Всьо. Чем больше образцов - тем правдоподобнее бред.
Откель тебе известно, кто что умеет, а кто - нет? Ведь всё во что упирается в итоге? Всё в итоге упирается в конкретную бизнес-задачу. Ежели ты пишешь код для АЭС или космоса, ты будешь и читать, и понимать написанное. Иначе просто тебя выгонят с работы. Другое дело, если это какая-то динамическая страничка Васи Пупкина. Там надо подешевле и побыстрей. Следовательно, читать и вникать уже не так критично.
лучше бы они ривер этот свой пилили
а потом запилили образ с ингрес балансером полностью на хрусте
>планируется заменить OpenSSL на RustlsКогда Let's Encrypt в проде перейдет на Rustls, это наконец будет реальным шагом для закапывания OpenSSL. Во всем FOSS хуже OpenSSL только BIND и sendmail
> Во всем FOSS хуже OpenSSL только BIND и sendmailнапишешь лучше любой из них?
>напишешь лучше любой из них?Из того, что я назвал мазню Васи Пупкина мазней, совсем не следует, что я сам художник.
Качество продукта оценивает пользователь.
Даже если внутри ты написал идеальные конструкции и абстракции, но оно тупит и падает, то вердикт будет - "овно!!1"
Думаю после эпичнешего побсера Heartbleed вопросы остались "лишь мало у кого" (с).
>ты написал идеальные конструкции и абстракции, но оно тупит и падаетОчевидно, что твои конструкции и абстракции далеки от идеала, если оно тупит и/или падает. Ну или неподходящий инструментарий был выбран для написания конструкций и абстракций.
Да
>напишешь лучше любой из них?knot, не?
Оно Bind заменяет только на треть, ну и оно ... ТА-ДА! на дыряшечке(С) :) Что должно быть невыносимым серпом для того чего у вас нет :)Кста сам knot - да, вполне себе.
Лучше сендмайла уже и без нас написали. Exim, Postfix, выбирай какой больше нравится. Они не только функциональнее, у них и перформанс лучше.И да, даже Exim безопаснее, чем sendmail.
"И да, даже Exim безопаснее, чем sendmail." - хороший троллинг, но нет.
> у них и перформанс лучшеВ больших деплоях — десятки миллионов писем в сутки — внезапно перформанс показывает Haraka, написанная на nodejs. Craigslist использует Haraka чтобы фильтровать SMTP-трафик перед постфиксом. Бедняга без скриптика на ноде загибается под нагрузкой. Такая вот заковыка выходит.
>> у них и перформанс лучше
> В больших деплоях — десятки миллионов писем в сутки — внезапно перформанс
> показывает Haraka, написанная на nodejs. Craigslist использует Haraka чтобы фильтроватьтолько вот перформанс - чего?
> SMTP-трафик перед постфиксом. Бедняга без скриптика на ноде загибается под нагрузкой.
т.е. просто отбрасывать его 99% по высосанным из пальца критериям. Без обработки. Хм, а мы раньше поцфикс в этом качестве использовали как раз ;-)
Фокус не в том что скрипт быстрее постфикса, а в том что он ничего не делает кроме закрытия соединения (и редко-редко форварда настоящему почтовику). А на ноде - потому что craigslist, а не потому что что-то еще. allowing JavaScript programmers full access to change the behaviour of the server - понятно тебе?
>т.е. просто отбрасывать его 99% по высосанным из пальца критериям. Без обработки.ЫтЫть ... А оне правда не в курсе что в новых постфиксах вотЬ это тоже привернули? Хотя craiglist жи, о чём это я :)))
PS: Знаю контору где целая команда с мЭнеджером на js (node) написала систему печати ...
То, что где то там - в глубине оно мой CUPS дёргает, никого не касается и на бонусы не влияет :-D
> ЫтЫть ... А оне правда не в курсе что в новых постфиксах вотЬ это тоже привернули?оне - жабаскрипт программерс. Которым эта хрень позволяет на ходу эти критерии крутить. А в поцфиксе твоем сложные алгоритмы только через милтер, который a) тормоз b) не для жабоскрипт программеров точно, да и любые другие постараются как-то отмазаться.
Да ты бы не гадал, а почитал что и как. Авось кругозор расширил бы заодно. Нет, там не просто 99% соединений закрывать. Подробности сам почитаешь, не буду портить сюрприз.
Почему под каждой новостью на опеннете последнее время кому-то всё неймётся людям отвечать "сам напиши"? Мне интересно, что этот индивид сам написал. Абсолютно уверен, что ничего, иначе на каждом углу бы кричал.
Что-то я не помню из OpenSSL много memory-safety issues, помню там было много логических ошибок.Как и в Тор тоже не было почти.
> Что-то я не помню из OpenSSL много memory-safety issues, помню там было много логических ошибок.Тут еще надо смотреть что за логическая ошибка.
Например если забыл добавить 1 к размеру буфера или наоборот убрал нужное и потом оно поехало в чужую память.. то вопрос это ошибка логики или в том н̶е̶ ̶н̶у̶ж̶н̶о̶ ̶и̶с̶п̶о̶л̶ь̶з̶о̶в̶а̶т̶ь̶ ̶д̶ы̶р̶я̶ш̶к̶у̶ ̶д̶л̶я̶ ̶в̶а̶ж̶н̶ы̶х̶ ̶п̶р̶о̶г̶р̶а̶м̶м̶ как СИ обрабатываюет такую ситуациюВот из последних новостей opennet.ru/opennews/art.shtml?num=58622
> чтение из области вне границ буфера
> обращение к области памяти после её освобождения
> двойное освобождение памяти
> некорректное разыменование указателя
> разыменование указателя NULLИли
opennet.ru/opennews/art.shtml?num=39518 - опять память утекла за границыПричем раньше лучше не было
opennet.ru/opennews/art.shtml?num=39518 - 2012 годНу и самое эпичное CVE-2014-0160 Heartbleed - от которого пострадало пол интернета
opennet.ru/opennews/art.shtml?num=39518
Если бы либа просто падала, то ущерба было бы в стократ меньше.
Отличная новость!
Реализации на сишке (все упомянутые) с gpl-раком (chrony) заменяют на раст со свободной лицензией!
Причем те, на ком половина инета держится. Вот настоящее признание.
А не 'ценные мнения' всяких админов-локалхостников-подкроватников.
Джва года ждал! Видимо совсем народ задолбался разгребать конюшни фсф.
Правильно. BIND задолбал, а заменить его по сути не чем.
> Правильно. BIND задолбал, а заменить его по сути не чем.И чем его недруги не угодили: PowerDNS, CoreDNS , knotDNS ?
Coredns в основном для контейнерных окружений заточен. Knot инопланетный - пиши модули на lua вообще на любой чих. Powerdns уже норм, но он прям для больших инсталляций, для мелких и средних оверкилл.Плюс бинда в том, что он лёгкий в настройке и легко скейлится от подкроватного до продакшена.
> Powerdns уже норм, но он прям для больших инсталляций, для мелких и средних оверкилл.У меня для своих доменов есть три дешёвых виртуалки в качестве авторитативных DNS. Так там отлично работает PowerDNS (синхронизация через MySQL).
>Powerdns уже норм, но он прям для больших инсталляций, для мелких и средних оверкилл.А LetsEncrypt это средняя или мелкая инсталяция?
> А LetsEncrypt это средняя или мелкая инсталяция?Очень мелкая. Даже в список просто мелких не попадает.
Чуть-чуть круче админа в местном НИИ. Но не сильно.
>> А LetsEncrypt это средняя или мелкая инсталяция?
> Очень мелкая. Даже в список просто мелких не попадает.
> Чуть-чуть круче админа в местном НИИ. Но не сильно.и то не факт. (потому что есть нии унитазостроения, но есть и "Восход", например)
> Coredns в основном для контейнерных окружений заточен.Не заточен, а популярен. Нагрузку держит — моё почтение. На вашем заводе столько DNS запросов не наберётся за год, сколько мы за день им раскидывем в одном только контуре. А у нас их четыре, по одному на NCC. Байнд, кстати, на этих нагрузках съедает все ресурсы и падает, но да то не диво.
Yadifa еще.
Unbound же.
Во! Вот это уже ближе к замене bind-a (чем knot) ...
Только вот снова засада - растишки снова софт на дыряшке(С) в качестве эталона толкают :-D
Да что же такое делается то ?!?!?! :-)
>Да что же такое делается то ?!?!?! :-)Так нах. же уже всё объяснил. Чатгопота только в Си умеет, потому что на стековерфлове много статей по нему.
"На расте никто ничего не пишет!"
"Раст никто в проде не использует!"
"Раст никому не нужен!"Ну, где вы, диванные аналитики, которые пишут такое в каждой новости про раст?
Чего язычок засунули туда, где солнце не светит?
Как же корпониггеры пытаются выдать желаемое за действительное. То ГПЛ у них раковая, потому что не позволяет барьям воровать, то Сишка плохая, потому что не позволяет построить барьям тотальный кибергулаг. Таким рабам любой правитель позавидует.
О, а вот и любители дыряшечных CVE c аргументом "позволяет делать рут!" подъехали?
Скажи-ка, убогий, у тебя в квартире двери есть?
А по улице ты в штанах ходишь или всем пятую точку подставляешь?Код должен быть корректным, без всяких дополнительных отверстий, которые так любят делать люибели СИшки.
И ладно если бы это был хеллоуволд, а когда они написькивают дырку в криптолибе от которой зависит пол интернета, то такаая ситуация неприемлема.
Вот дырявую ОпенССЛ и заменяют.
правильно ли я понимаю, что любая уязвимость в ПО, написанном на расте, будет расцениваться как бекдор?
> правильно ли я понимаю, что любая уязвимость в ПО, написанном на расте, будет расцениваться как бекдор?Точно так же как логическая ошибка в любом другом языке.
Но ты можешь считать ее бекдором.
Правда а что ты сделаешь? Это же оепенсорс - никто никому ничего не должен)
> Точно так же как логическая ошибка в любом другом языке.бекдор и есть по факту логическая ошибка, а вот всякое UB как бекдор это реверсивная логика.
Теперь то однозначно можно сказать, что бекдор.
Мы ведь понимаем к чему ты клонишь. Бекдоров не существует это все заговор. Пока по телеку не скажут что это бекдор это не бекдор.
> Пока по телеку не скажут что это бекдор это не бекдор.И не важно по какому каналу, будь то про мелкомягкие апдейты или кашперовские.
> бекдор и есть по факту логическая ошибка, а вот всякое UB как бекдор это реверсивная логика.ты хотел сказать "намеренная логическая ошибка"?
Как оценить "забыл сделать free, получил UB, подарил рут на серваке торчащем в интернет"?
Это логическая ошибка, UB или "ну ничего страшного, зато уязвимость исрпаили, чего вам еще надо? и СИшка вообще не причем!11"> Теперь то однозначно можно сказать, что бекдор.
Можешь это считать точно бекдором или не точно.
Ты же осознаешь что "о боже мой! всем плевать" (с)
> ты хотел сказать "намеренная логическая ошибка"?а других логических ошибок не бывает, логическая ошибка приводит к противоречию, если ваши правила вывода приводят к противоречию и вы принимаете их за истину (выпускаете ПО в прод, формально не верефицировав его), то либо вы "самодур", либо пытаетесь дурить других. Но с пеной у рта вы же мне докажите, что вы не "самодур", значить второе.
> Как оценить "забыл сделать free, получил UB, подарил рут на серваке торчащем в интернет"?
явный бекдор, никак иначе. "Я человек, я могу забыть" - как говорили в школе, а "че голову дома не забыл?"
> Ты же осознаешь что "о боже мой! всем плевать" (с)За всех я думать не обязан (ц)
> выпускаете ПО в прод, формально не верефицировав егоМ... без обид, но много ли вы видели в проде формально верифицированного софта?
> то либо вы "самодур", либо пытаетесь дурить других
Есть только черное и белое?) Хотя в данном случаем черное и черное.
Очень инфантильные рассуждения получаются.> "че голову дома не забыл?"
Нужно в lkml написать и спросить, не забывали ли они чего))
> М... без обид, но много ли вы видели в проде формально верифицированного софта?Такой софт требует законченной спецификации, а современные тенденции это "х*як, х*як и в продакшен" понятия не имеют, что такое законченный продукт. Области где необходима верификация ПО, поверьте, там ее делают. Эт вам не авотпилот теслы.
На досуге: https://andrewkelley.me/post/why-we-cant-have-nice-software....
> Есть только черное и белое?) Хотя в данном случаем черное и черное.
> Очень инфантильные рассуждения получаются.Почему же? строго по контексту, вы мне продаете ПО, а я спрашиваю - "безопасно ли оно", вы глядя мне в глаза, говорите - "ара, мамой клянусь, безопасТно". В итоге обнаруживается уязвимость, и кто вы в таком случае? Бекдорщик, или "самодур"? И все варианты, ой ошибся, ой случайно, не заметил, не внимательный - относятся к "самодур", но вы ведь это не признаете, что вы "самодур".
Проведу такую аналогию, представьте, что вы по не внимательности сбили машиной пешехода на смерть.
Если вы после этого сядите за руль, то вы - бекдорщик.
> современные тенденцииА современные тенденции начались когда? Лет 30 назад? Или 50?
Или с первого жука залетевшего в ламповый компухтер?> вы мне продаете ПО
Странно, мы в теме где обсуждается опенсорс либа, не думаю что вам ее кто-то продает)
Но даже если это платное ПО - то отказ от ответственности стал стандартом.
И когда его предложили отменить - то началось нытье что "это вредит опенсорсу")
opennet.ru/opennews/art.shtml?num=60273> а я спрашиваю - "безопасно ли оно", вы глядя мне в глаза, говорите - "ара, мамой клянусь, безопасТно".
Не, я скажу "побезопасТнее чем у других")
Но удачи вам походить по базару и найти "верифицированное ПО с сертифекаицей". Надеюсь у вас толстый кошелек.> "самодур"
Довольно тупое сравнение.
Наверное вы тот самый человек, который в жизни не сделал ни одной ошибки.
Ну или тогда вы тоже самодур или бекдорщик.
> Или с первого жука залетевшего в ламповый компухтер?Еще раньше.
> Странно, мы в теме где обсуждается опенсорс либа, не думаю что вам ее кто-то продает)
мы обсуждаем безопасность и что тут у нас в соседней новости?
https://www.opennet.dev/opennews/art.shtml?num=61440
> Но даже если это платное ПО - то отказ от ответственности стал стандартом.
А ну да, увольте юристов.
> Не, я скажу "побезопасТнее чем у других")
а ну да, все познается в сравнении, а не в доказательстве.
> Но удачи вам походить по базару и найти "верифицированное ПО с сертифекаицей". Надеюсь у вас толстый кошелек.
Он у меня быстрее "похудеет" если оно таковым не будет.
> Наверное вы тот самый человек, который в жизни не сделал ни одной ошибки.
да так и есть, а кто не делает ошибок? - правильно, тот кто ничего не делает с бодуна.
>Ну или тогда вы тоже самодур или бекдорщик.
да я самодур, потому-что сам себе повторяю, я еще не способен делать "безопасТное" ПО.
> Нужно в lkml написать и спросить, не забывали ли они чего))зачем кому-то, что-то говорить? Зачем вообще мешать глупцам совершать глупости?
Формально не верифицированный код, потенциально (то есть ничего не мешает его туда сунуть) содержит бекдор. Использовать такое ПО можно только на свой страх и риск.
Ну Rust это палка с двумя концами. 1 - это типа безопасный код. 2 - это контроль якобы бесплатного кода со стороны пендосов. Не просто они так сказали, что нужно переходить на безопасный код и все побежали как по указке. Связано это скорее всего будет с закрытостью системы. Они уже ряд пакетов хотели перевести на бинарные рельсы и закрыть код. Так что с геополитической обстановкой в странах - не лучший выбор. Во всяком случае пока такие мысли
> Ну Rust это палка с двумя концами. 1 - это типа безопасный код. 2 - это контроль якобы бесплатного кода со стороны пендосов.Ничоси! а кто пишет весь остальной опенсорс, неужели марсиане?
> Не просто они так сказали, что нужно переходить на безопасный код и все побежали как по указке.
Или нужно отбросить теории заговора и их просто задолбали CVE в кодах написанных на сишке.
> Связано это скорее всего будет с закрытостью системы.
Ого, может ты еще и расскажешь, что локально репы для раст пакетов развернуть нельзя?
> Они уже ряд пакетов хотели перевести на бинарные рельсы и закрыть код.
Вранье. Код никто не закрывал.
Даже в той новости opennet.ru/opennews/art.shtml?num=59656
"Код Serde продолжает быть открытым и распространяется под лицензиями MIT и Apache 2.0, а несогласным с новой политикой разработчикам предложено создать и поддерживать собственный форк пакета."
> Так что с геополитической обстановкой в странах - не лучший выбор. Во всяком случае пока такие мыслиКонечно. Надо просто не быть удаками, и тогда все будет нормально.
Ему просто запретили репы делать у себя :(
И скачивать раст тоже.
В хрусте единственное что мне нравится, так это нормальные типы с фиксированной длиной, а не как в Си, где нужно подключать stdint.h чтобы прописать какой-нибудь uint8_b.P.S. Не понял, а где тут мат, что предыдущий подобный коммент был удален?
uint8_t конечно же. Очепятка.
> В хрусте единственное что мне нравится, так это нормальные типы с фиксированной
> длинойдо сих пор не могу понять, что двигало Керниганом и Ритчи, что они отказались от типа byte (был в bcpl и b) и сделали ненужные, по сути, для системного языка, "универсальные" - зависимыми от реализации. Это хорошо смотрится в фортране, а им-то вот зачем? И ладно б не думали и не знали что бывают не только 16битные процессоры - но ведь знали и трахались с этой проблемой. (Ну ладно с char, там действительно наверное не думали.)
Еще сложнее понять комитеты якобы-ответственных за стандарт, которые за пол-века не смогли вернуть его на положенное место, а зависимым от реализации сделать char (что разом решило бы проблемы с пложением Wchar аналогов всех стандартных строковых функций), как и следовало с самого начала.
> до сих пор не могу понять, что двигало Керниганом и РитчиДумаю то же, что двигало тем самым гением, который сэкономил целый 1 байт придумав взять null-terminated string для "кроссплатформенного ассемблера"
Это же целый байт, сними шляпу! (с)> Еще сложнее понять комитеты якобы-ответственных за стандарт, которые за пол-века не смогли вернуть его на положенное место
А ты посмотри кто был в тех комитетах.
Правильно, представители больших компаний, уже написавшие 100500 вариантов компиляторов, и которые очень не хотели чтобы именно их реализация стала "не по стандарту".
Сколько они это стандарт мучила?
Когда K&R C появился? 1978 год насколько помню.
А стандартизацию затеяли аж в 1983, только сформировав комитет.
Название первой версии дыряшки C89 как бы намекает, что у приближенных особ были безбедные и сытые годы.
> Думаю то же, что двигало тем самым гением, который сэкономил целый 1 байт придумав взять
> null-terminated stringон не байт экономил, дурашка. Он экономил гигаватты и гигачасы счетного времени. В общем-то дальше можно было бы тебя и не читать. Ты не знаешь как устроены процессоры - ни те древние, где вообще не было эффективных вариантов, ни современные (где вариант у интела и только у интела есть, но привязан к единственным регистрам единственноверным образом... добро пожаловать обратно во времена 8080 и просто 80 с их дурацкими "аккумуляторами" - из времен регистровых файлов с полубесконечным числом универсальных регистров)
> Правильно, представители больших компаний, уже написавшие 100500 вариантов компиляторов, и
> которые очень не хотели чтобы именно их реализация стала "не по стандарту".мне кажетсо, что как минимум MS была бы крайне заинтересована (поскольку ее страдания с wchar_t невозможно недооценить). И вполне могла исправить свой компилятор только ради того чтоб сделать гадость IBM (у которой и так был - г-но и все старались как могли пользоваться msовским). Но нет.
> он не байт экономил, дурашка. Он экономил гигаватты и гигачасы счетного времени.
> В общем-то дальше можно было бы тебя и не читать.
> Ты не знаешь как устроены процессоры - ни те древние, где вообще не было эффективных вариантовНу да, ну да)) Почему-то в паскале того же времени смогли додумать хранить length прямо в строке. Да, это добаваляло ограничений, но они были разумные и разрешимые. Но конечно лучше бы они взяли два байта для длины.
Но сишники особенные. Им же нужно оперировать "бесконечными" строками. (нет, они просто передрали это с PDP-10/11). И, как результат, наплодили просто немерянное количество багов, которые отстреливают ноги даже сейчас.
>> он не байт экономил, дурашка. Он экономил гигаватты и гигачасы счетного времени.
>> В общем-то дальше можно было бы тебя и не читать.
>> Ты не знаешь как устроены процессоры - ни те древние, где вообще не было эффективных вариантов
> Ну да, ну да)) Почему-то в паскале того же времени смогли додумать
> хранить length прямо в строке.Именно поэтому никто и не писал на паскале системный софт.
Попробуй на том паскале написать банальнейший греп. Под архитектуру не имеющую rep movsb особенно интересно поржать будет (впрочем этот интеловский костыль крив бай дизайн и лучше им не пользоваться именно для строк. Для просто байтов там тоже... нюансы)
Язык для примитивных учебных программ так и остался бы языком для примитивных учебных программ, если бы когда-то борланд не добавила в него как раз низкоуровневые небезопастные примитивы (а в си вот не добавила, блин... volatile и даже interrupt вот пожалуйста, а байт - хренушки).
> были разумные и разрешимые. Но конечно лучше бы они взяли два
> байта для длины.и сломались бы без предупреждения о строку длиной больше 65536? Удобно, чо. А как это здорово работало бы на восьмиразрядниках (ага, были такие, и на них был паскаль)?
> Но сишники особенные. Им же нужно оперировать "бесконечными" строками. (нет, они просто
> передрали это с PDP-10/11). И, как результат, наплодили просто немерянное количествоинтел тоже передрал это. Автоматическое выставление zero flag есть наверное в любом процессоре после z80.
Вот адресную арифметику с автоинкрементами - не передрал. ( *a++ - это не одна команда процессора pdp11, а ноль, если a - int * )> багов, которые отстреливают ноги даже сейчас.
это результат фейла гарвардской архитектуры (патамушта она слишком дорого обходилась). Си - действительно всего лишь высокоуровневый ассемблер, отражающий реальную архитектуру реальных систем. В компьютере фон-неймана строки - бесконечные. Оно так сделано, смирись с этим.
>> Ну да, ну да)) Почему-то в паскале того же времени смогли додумать хранить length прямо в строке.
> Именно поэтому никто и не писал на паскале системный софт.Вот вы сейчас оба - серьёзно? :-\
Первому:
Паскалевскими строками для Си все у юношестве делали. Кто либой, я себе помню макро делал.
Но рыбы таки не нашёл - переболел и бросил.
Второму:
Но системный софт стали писать на Си не из за строк, ну кончайте маяться этой самой!
Я не знаю железа, которое хоть как-то машина Тьюринга и на котором не забутстрапится Си!
А с Паскалём ... упс! (Хотя сам по себе язык как язык! Если не для системы - даже годный.)
Про rust ... я даже начинать не буду :)
Единственная у них надежда что школота отхлынет на новый-модный-молодёжный, а реальные перцы кто остался будут дальше его двигать используя голову, на не хайп. Но слижком уж фантастиш вариант для нонешнего мира :)
> А с Паскалём ... упс!у того паскаля, который про строки с префиксом длинны - настолько примитивный компилятор, что его осилили даже аспиранты дедули Вирта. Без всяких модных самозабутстрапливающих си, не говоря уже про собранных тем yacc с lex'ами. Вот просто с нуля взяли и за семестр написали, на ассемблере. Ты мог бы, подозреваю, управиться и за пару недель, это даже на курсовик по нынешним дням с трудом тянет. Только вот нафиг такой нужен?
Аналог дельфи, понятно, посложнее будет. (но дельфи сильна не компилятором, а средой и миллионами готовых модулей, это вот ты не сможешь точно)
не длинны а коротки
>его осилили даже аспиранты дедули Вирта. Без всяких модных самозабутстрапливающих ...Ну не _совсем_ так.
Они то как раз - запилили машину P-кода, и их компайлер рожал Р-код. Просто об этом уже все забыли, потому что по этому пути тогда не пошли, жаба это уже девяностые а тот же багланд нэйтив уже делал :)
> Ну да, ну да)) Почему-то в паскале того же времени смогли додумать хранить length прямо в строке. Да, это добаваляло ограничений, но они были разумные и разрешимые. Но конечно лучше бы они взяли два байта для длины.А прикинь в функцию в этом твоём паскакали прилетел указатель на середину строки
дык, за тебя старина Вирт все продумал - нет указателя (и ссылок ведь тоже нет!) - нет проблем!Нужна середина строки - копируешь (КОПИРУЕШЬ, с-ка!) все байтики начиная с этой середины - в новую строку. И ее вот уже и передаешь. А если в ней та функция чегой-та поменять была должна - то...правильно, снова копируешь и return ее! Надежно, как танк. (И за хабаром удобно...ну ты понял)
(поэтому логично было ограничить длину строк байтовой переменной, чтоб ты сразу понял что язык не подходит для работы со строками, они там по сути - константы)
>дык, за тебя старина Вирт все продумал - нет указателя (и ссылок ведь тоже нет!) - нет проблем!не знаю что там придумал Вирт, но в турбопаскале указатели были, и были указатели на нультерминированые строки. так что не нада нам тут ля-ля.
>>Нужна середина строки - копируешь (КОПИРУЕШЬИнтенсивное копирование = тормоза
Тысячи игр тому подтверждение.
Кстати, Вы не задумывались, а где именно появляются новые строки, и сколько копипований происходит за кулисами.Для какого то кода, медленно но чуть безопаснее уместно, но не везде. Да и системным программированием далеко не большинство занимается. Нужно и то и другое, еще вот то. Но нужно каждое для своих случаев.
>>>Нужна середина строки - копируешь (КОПИРУЕШЬОткуда такой бред?
Слайсы придумали не сегодня и не в расте.
В других языках оно позволяет брать часть строки без копирования.> Интенсивное копирование = тормоза
> Тысячи игр тому подтверждение.Хм.. т.е во всем виноваты строки?
Я думал что обычно криворукие игроделы добавляют модельку зубов на 100500 полигонов, которую даже не видно.
А вот оно что.> Кстати, Вы не задумывались, а где именно появляются новые строки, и сколько копипований происходит за кулисами.
Появляются естественно там, где они создаются.
Странный вопрос)> Для какого то кода, медленно но чуть безопаснее уместно, но не везде.
Да, и это "не везде" резко поменялось с распространением интернета.
Когда твой комп ломается просто при открытии специальной странички
opennet.ru/opennews/art.shtml?num=59838
"Уязвимость позволяет выполнить свой код при открытии специально оформленной web-страницы, вызывающей функции кодирования в формате VP8. "Или рут на компе получается как два пальца
opennet.ru/opennews/art.shtml?num=59867
По причине того, что бракоделы сишники не смогли сделать сплит строки...То да, начинаешь задумываться "а нужна ли настолько скорость, если пятая точка голая"
>>>>Нужна середина строки - копируешь (КОПИРУЕШЬ
> Откуда такой бред?
> Слайсы придумали не сегодня и не в расте.
> В других языках оно позволяет брать часть строки без копирования.в других - там где строки сложная структура (со всеми вытекающими при их обработке) - позволяет.
А в тех где в начале строки хранят ее длину - не позволяет, потому что даже если ты как-то получишь переменную строкового типа указывающую на середину строки - все сломается, потому что с точки зрения языкового рантайма ЭТО не является строкой.> "Уязвимость позволяет выполнить свой код при открытии специально оформленной web-страницы,
> вызывающей функции кодирования в формате VP8. "там вообще нет никаких строк.
У вас паскаль головного мозга.
> там вообще нет никаких строк.
> У вас паскаль головного мозга.Ты совсем дундук?
Во второй же ссылке
opennet.ru/opennews/art.shtml?num=59867
генитальные СИшные пограммеры не смогли строку обработать
- if (p[len] != '\0')
- p += len + 1;
+ /* We reached the end while processing the tunable string. */
+ if (p[len] == '\0')
+ break;
+ p += len + 1;Это просто максимальный идиотизм, 11 из 10.
А первая ссылка - это пример того, что происходит когда важные приложения пишешь на каком-то копролите, причем ногами.
>> там вообще нет никаких строк.
>> У вас паскаль головного мозга.
> Ты совсем дундук?
> Во второй же ссылкепочему я буду открывать вторую ссылку если ты попался на вранье уже на первой? Мы обсуждали - строки. Там никаких строк в помине нет.
> opennet.ru/opennews/art.shtml?num=59867
> генитальные СИшные пограммеры не смогли строку обработатьИндусня не шмагла, да. Ни про современные функции split* не знала (впрочем, возможно их как раз и не стоит использовать в ld.so), ни сама не справилась. Там скорее всего парнишка из Бангалора лет двадцати, кодить учился глядя из-за плеча на экран гуру на тротуаре у сортира. А вот то что тысячегласс как всегда глядел мимо, а парнишка может комитить в проекты такого масштаба напрямую из сортира - говорит кой о чем, увы. (Код лень открывать, но похоже он был и остался г-ном индуса и после правки тоже.)
> - if (p[len] != '\0')
> - p += len + 1;
> + /* We reached the end while
> processing the tunable string. */
> + if (p[len] == '\0')
> + break;
> + p += len + 1;
> Это просто максимальный идиотизм, 11 из 10.твой? Если что - тут речь нифига не о пропущенном байте под \0 . Там логическая ошибка. Покажи свою реализацию на любом языке, не подглядывая - а мы поржом.
> А первая ссылка - это пример того, что происходит когда важные приложения
> пишешь на каком-то копролите, причем ногами.они оказываются написанными. А не дальше CoC.md и README с "оно"/"это" дело не продвинулось потому что боров не пустил, а как от него убежать, гуру у сортира не показал.
> почему я буду открывать вторую ссылку если ты попался на вранье уже на первой? Мы обсуждали - строки. Там никаких строк в помине нет.Вранье? Хамите сударь!
И мы обсуждали не строки, "нормальные типы с фиксированной длиной", то что СИшка овно, как и ее "стандарт", вспомните с чего началось обсуждение или выпейте таблетки от склероза.> Индусня не шмагла, да. Ни про современные функции split* не знала (впрочем, возможно их как раз и не стоит использовать в ld.so), ни сама не справилась. Там скорее всего парнишка из Бангалора лет двадцати, кодить учился глядя из-за плеча на экран гуру на тротуаре у сортира.
Но других писак для важных либ (и ядра тоже) нету.
Хотя их никогда не было.
Вот тут например opennet.ru/opennews/art.shtml?num=59906
CVE-2023-43788: Out of bounds read
- if (*s2 == '\0') {
+ if (*s2 == '\0' || c == '\0') {
А ведь это ХОрг, писякавшийся самыми арийскими белыми маскулинными мужуками, а не какой-то индусней.
Причем бага с 1988 год! Диды писали, настоящие акса-калы!В общем 'С in CVE is for C language'
> А вот то что тысячегласс как всегда глядел мимо, а парнишка может комитить в проекты такого масштаба напрямую из сортира - говорит кой о чем, увы. (Код лень открывать, но похоже он был и остался г-ном индуса и после правки тоже.)
Потому что тысячиглаз хотят потреблять, а не буковки рассматривать.
> твой? Если что - тут речь нифига не о пропущенном байте под \0 . Там логическая ошибка. Покажи свою реализацию на любом языке, не подглядывая - а мы поржом.
Не. слава богу я не настолько обнищал, чтобы идти писать на СИ.
Я бы скинул реализация на расте, но там таких конструкций просто нет, слава богу.
Ну скрипты а на питоне я не буду предлагать по понятной причине.
> Я бы скинул реализация на расте, но там таких конструкций просто нет, слава богу.В смысле там нет возможности написать парсер строк вида var=value ? (Не используя готовую библиотеку, заметим, потому что она в этот момент недоступна.)
А скрипты на питоне не надо предлагать, потому что там за вас все написали на б-гомерзком си.
>В смысле там нет возможности написать парсер строк вида var=value ?В смысле на Rust нет нуль-терминированных строк. Там есть строки, схожие с Паскалевскими.
>>В смысле там нет возможности написать парсер строк вида var=value ?
> В смысле на Rust нет нуль-терминированных строк. Там есть строки, схожие с
> Паскалевскими.ну вот покажи парсер нескольких var=value - с какими хочешь (но их надо получить у операционной системы. Тоже какой хочешь - если ресдох умеет передавать "схожие с паскалевскими" то вперед). Стандартные библиотеки не используем, мы как раз заняты программой которая их должна с нами линковать, а ее объем, поскольку это очень критичная часть системы - стараемся держать минимальным.
В индусский код чур не подглядывать.
Начнём с того, что не я начал с тобой спорить на эту тему, поэтому, наверное, не мне, всё же, писать код для тебя.String в Rust - это часть стандартной библиотеки (https://doc.rust-lang.org/std/string/struct.String.html). Если мы говорим об ОС, типа Linux, и стандартную библиотеку Rust использовать нельзя, то, очевидно, нам придётся оперировать с Си-строками. И что это доказывает?
Как работает Redox - я понятия не имею, и вникать особо не желаю. Допущу, однако, что там вполне можно оперировать строками в духе Rust.
> Если мы говорим об ОС, типа Linux, и стандартную библиотеку Rust использовать нельзя, то,
> очевидно, нам придётся оперировать с Си-строками.это неочевидно.
(в смысле, никто не мешает изобрести ос в которой строки представляют собой разновидность объекта, и в нем есть поле длинны, неотъемлемое от объекта - я хз так ли в ресдохе, но вполне ведь могли)Вопрос был в показании кода, правильно разбирающего предложенные (сырые) данные. Потому что велики шансы что произвольный васян с опеннета сделает еще хуже того индуса.
Повторяю - там логическая ошибка, а не забыли про \0.
Очень неудобно конечно.Намного удобнее когда тебе нужно посчитать длину строки - тебе нужно пилякать до конца строки сравнивая ВСЕ символы с \0. Это ну оооочень энергоэффективно!
А если в твоей кодировке \0 валидный символ или валидный символ может начинаться с \0... то упс, да пошел ты, это древнее омно такое не поддерживает. Ведь кто же мог подумать, что символ может занимать больше чем char!
Чтобы сравнить все строки тебе тоже нужно идти и сравнимать посимвольно. Всегда.
Вместо того чтобы вначале сравнить размеры, а только потом, если нужно сравнивать символы.Или что тебе нужно в каждый аллок не забыть добавить +1. Чем регулярно занимаются сишники всех мастей.
А потом выходят за пределы буфера и портят память.Но разумеется эти все недостатки меркнут перед необходимостью взять середину строки!
Это же настолько распространенная операция)))
> Намного удобнее когда тебе нужно посчитать длину строки - тебе нужно пилякать до конца строки
> сравнивая ВСЕ символыникакого способа посчитать длину строки, кроме как посчитать все ее символы - внезапно, не существует.
Если тебе эта длина нужна больше одного раза - ты можешь ее сохранить себе на память ничем не хуже паскакалевого рантайма. И пересчитывать каждый раз как только меняешь строку (ой, ошибочка вышла...) Внезапно, паскакалевый рантайм именно это и делает.Только он еще и КОПИРУЕТ эту строку на каждый чих.
> А если в твоей кодировке \0 валидный символ или валидный символ может начинаться с \0... то
то обратись к разработчикам своей неудачной архитектуры. Вероятно что-то аналогов не имеющее или китайское, да?
Потому что не просто так в применяемых массово компьютерах и системах нет кодировок где 0 валидный символ.
> А если в твоей кодировке \0 валидный символ или валидный символ может начинаться с \0... то упс, да пошел ты, это древнее омно такое не поддерживаетВо-первых, приведи пример такой кодировки или реального случая, где 0x0 валидный символ, тогда и поговорим.
Во-вторых, какое такое древнее омно и что не поддерживает? memcpy/memcmp плевать на то, что там в памяти лежит. Реально какой-то клован
> Во-первых, приведи пример такой кодировки или реального случая, где 0x0 валидный символ,Какая-нибудь Заря или еще что. Т.е. то самое древнее омно. Возможно и были какие-нибудь процессоры 50х годов не имевшие ZF и каждый раз сравнивавшие регистр с нулем отдельной операцией просто чтоб проверить кончился уже счетчик или еще нет. Чего бы там и не начать кодовую таблицу с нуля, не пропадать же месту. Но на них никакого си в помине не было.
> Во-вторых, какое такое древнее омно и что не поддерживает? memcpy/memcmp плевать на
но это не функции работы со строками.
> чтоб ты сразу понял что язык не подходит для работы со строкамиа потом придумали SSO
> Когда K&R C появился? 1978 год насколько помню.
> А стандартизацию затеяли аж в 1983, только сформировав комитет.
> Название первой версии дыряшки C89 как бы намекает, что у приближенных особ были безбедные и сытые годы.Расту живёт десятый год уже, и вообще ни одного стандарта до их не было и ещё долго не будет. Я лучше буду следовать за теми, кто жил сыто и безбедно, чем за громкими и идеологическими.
> Расту живёт десятый год уже, и вообще ни одного стандарта до их не было и ещё долго не будет.Ты хотел сказать "всего десятый год"?
Я тебе уже написал что для дыряшки стандарт появился через 11 лет.
И то, то №№№№№ что выдал комитет стандартом может назвать тольько умственно отсталый.
"Каша готовится из крупы, может содержать добавки.
Добавки у нас неопределены, и в зависимости от реализации и желания левой пятки повара могут быть в виде мяса, шоколада или говна"Море UB/IB и прочего "мы тут договориться не смогли, любитесь сами или пусть создатели компиляторов думают, они башковитые".
В итоге, на очнове этого "стандарта" настрогали кучу несовместимых компиляторов, где один и тот же код, может выдавать разный результат.
И самое страшное что каждый из них именуется "компилятор дыряшки".
Даже если он этот самый стандарт не реализует.https://en.cppreference.com/w/c/99
С99 до сих пор не реализован полностью никем
Вот оно качество от дидов!
> сделали ненужные, по сути, для системного языка, "универсальные" - зависимыми от реализацииТеперь это преподносят как "фичу". Хотя, такое недетерминированное поведение максимально странно для языка, на котором кодят под bare metal.
>> сделали ненужные, по сути, для системного языка, "универсальные" - зависимыми от реализации
> Теперь это преподносят как "фичу". Хотя, такое недетерминированное поведение максимально странно для языка, на котором кодят под bare metal.А это хороший вопрос)
Может цель существования СИшки была "сидеть на поддержке кода до самой старости"?
Ну чтобы не поперли с проекта за профнепригодность.
>> сделали ненужные, по сути, для системного языка, "универсальные" - зависимыми от реализации
> Теперь это преподносят как "фичу".и тогда преподносили. Можно предположить что им зачем-то было надо на халяву получить 32битность без переписывания кода (не в системном софте а в чем-то еще - хотя бы томсоновой space travel из-за которой все началось) и они решили что мильен ifdef в системном коде не так страшны, "все равно надо машино-зависимые части писать по другому, с оглядкой на архитектуру".
Но, блин, ведь в bcpl с которого они все вышли - все ж было изначально как надо.
>Но, блин, ведь в bcpl с которого они все вышли - все ж было изначально как надо.Да, но на Си пишутЪ до сих пор, а где тот bcpl? А почему? Я вот не уверен.
Перец который Exim слепил тоже зело bcpl любил. Он даже на Сях писал ... "специфически" :)Хотя одна из причины их успеха тогда:
"The language I chose to write in was BCPL, because at the time this was the only suitable language available on all the machines" "From Punched Cards To Flat Screens"(С)Philip HazelСейчас, _возможно_ это уже и не так критично. Но не уверен.
> Да, но на Си пишутЪ до сих пор, а где тот bcpl?а он вроде чей-то был. Т.е. его просто нельзя было на халяву скопировать, и пришлось писать свой транслятор - ну а попутно и в языке что-то поменялось для удобства самих пишущих. Но вот в чем оно удобство - до сих пор неясно.
Могу лишь предположить, почему так (отказались от byte и платформозависимость других типов).
Возьмём какой-нибудь int. Ежели ты пишешь программу под 16-битный процессор, то будешь вынужден считаться с этим, чтобы твоя программа работала максимально быстро. Да, в ущерб универсальности работы твоей программы на другом процессоре, например 8-битном. Другими словами, более важна была локальная оптимизация бинарного кода, чем универсальность кода на Си.
ну так тем более - в процессоре ж нет никаких интов. В нем есть байты, слова, иногда длинные целые или плавающие. А то и двоично-десятичные с фиксированной точкой.Интерпретация их как чисел, указателей и т д и разбирательства что делать в каждом конкретном случае - на совести программиста (то же самое численное переполнение, и вообще - считать его вооот тут знаковым или нет - процессору-то все равно, у него только расширение знакового разряда может быть, если повезет)
А инты и флоаты придумали для фортрана, который для физиков а не инженеров.
Зато в процессоре есть адресная арифметика. Да и просто арифметика. Хотим получим оптимальный код - надо быть ближе к железу, то есть, размеру регистров. Поэтому под как бы универсальным int-ом создателями Си возможно подразумевалось энное количество тех самых байтов.Но это всё, повторюсь, исключительно мои личные догадки, ни разу не претендующие на истину.
> Зато в процессоре есть адресная арифметика.жютко ж небезопатсная!
Я уже писал опоздавшим родиться - *a++ - это НОЛЬ операций процессора pdp11. Пока a - указатель на выровненное машинное слово (ну или int в сишном понимании, но процессору-то вообще до лампы что там лежит). Такая вот оптимизация.
> Хотим получим оптимальный код - надо быть ближе к железу, то есть, размеру регистров.
поэтому нужны переменные byte, word, модификатор register (появился на 20 лет позже) и т д.
А они вот это *a++ сделали (причем тут приоритеты операций еще специально расставлены чтоб не были нужны лишние скобки, хотя результат совсем неочевиден - для тех кто не знает архитектуры), а байты зачем-то выкинули (хотя бы в качестве альтернативы оставили - так нет же ж)
У меня обратное предположение - что у них была сугубо прикладная программа (и мы даже подозреваем, какая) которой становилось легче от 32 бит инта - а если она упиралась в переполнение, то это там либо решалось какими-то проверками, независимыми от битности, проверявшими по факту (но неясно почему в языке нет для этого конструкции), либо им было наплевать (ну упала при запуске - значит надо уменьшить параметр) - что больше всего похоже.
ntps - и так был очень хорошо написан. И читаемо и надёжно.А ntpd-rs - при бегом просмотре видно что сильно кастрирован, тестировать там нечего, он недосписан до конца,
А есть ли альтернатива этому Let's Encrypt, что бы он не заставлял запускать свои скрипты на сервере ?Я бы мог по крону на другой машине скрипты запускать, лишь бы не двавать им хозяйничать на хостинге.
Свои сертификаты - это замечательно, но вопрос именно про подписанные с помощью CA из встроенных в броузер, что бы юзеры не терялись из-за варнингов.
> А есть ли альтернатива этому Let's Encrypt, что бы он не заставлял
> запускать свои скрипты на сервере ?он тебя и не заставляет. Мягко уговаривает. Хошь в колхоз, нет - корову отнимем.
Можешь запускать не его а еще чьи-нибудь, с тем же успехом.
> Я бы мог по крону на другой машине скрипты запускать, лишь бы
можешь, но у этих скриптов должен быть либо доступ в .shithappens/ (или как там он называется) сайта твоего корневого домена, либо доступ к dns с правом создавать там произвольную запись - снова в корне.
А потом тебе надо каким-то образом полученный сертификат запихать в веб или чего-у-тебя-там сервер (т.е. нужен юзер с правом реконфигурировать сервер хостинга и правом лазить там в то место где лежат сертификаты... ну ты понял, да, что на самом деле этого юзера зовут рут, даже если сквозь лес костылей это плохо видно?)Разумеется ты можешь понакостылить все это относительно безопасным образом, разделив зоны безопасности на много мелких частей, но... проще и логичнее если сервер имеет какой-то доступ в интернеты, таки оставить все это прямо на нем - так даже меньше уязвимых мест в цепочке.
Ну и заменить летсшиткриптовый чудо-скрипт с его curl | sudo bash чем-то вроде acme-tiny а остальное сделать самому тоже никто не запрещал.
Исключение - если сертификаты тебе строго для внутренних нужд, в изолированной сети, но нужны настоящие "чтобы юзеры".
acme.sh прописывается в /root/.bashrc добавляя строчку
. "/root/.acme.sh/acme.sh.env"
сам скрипт acme.sh - огромен - на 200 экранов.
Вот его то я бы и заменил на что-то простое. Готов на копировать временные файлы для верификации на сайты сам, курлом.
Главное что бы acme там своей жизнью не жил, делая неизвестно что.В последней версии хостинг панели - они его даже к Постфиксу прибили. Разбираюсь как это заблокировать, т.к. нужно только для Апача.
dehydrated никуда сам не прописывается и достаточно небольшой скриптик. есть возможность дописывать хуки (ну и для многих случаев жизни легко ищутся готовые)
> Главное что бы acme там своей жизнью не жил, делая неизвестно что.я же говорил - acme-tiny.py - https://github.com/diafygi/acme-tiny
В нем 200 - _строк_ключ генеришь - ручками (можешь взять тот что тебе чёртбот нагенерил уже), сертификат ловишь ручками (скрипт тебе его выплюнет в КОНСОЛЬ, а в файл сам, все сам), единственное что делает сам скрипт - создает пресловутый файл, и это единственное место куда он должен иметь право записи.
В конце там только прочитай про staging environment - тренироваться надо на тестовом сервере, чтоб летшиткрипт тебя не забанил.
https://github.com/diafygi/acme-tiny/pull/238 - если тебе нужна поддержка wildcards. Обратить внимание что там еще внутри СВОЙ pull request, исправляющий ошибку в протоколе.
раз в три месяца выписываешь руками новый серт и кладёшь руками на сервер. acme-challenge руками вписываешь.
Вы могли бы доку посоветовать ?
На Стаковерфлоу - ответы "ищите что-то еще".
https://xiangyuecn.github.io/ACME-HTML-Web-Browser-Client/AC...это вот - если совсем уж "руками"
Альтернатив нет, но у них такой простой API, что интерн справится, даже джуна нанимать не надо.
Изнутри хостинга забирай серты с пристежной машины для скачивания.Про API уже сказали: или сам пишешь логику, или чужие скрипты. Чужие скрипты можно почитать. Вставить 'set -x' и вынуть нужные команды без остальной логики, но скорее всего не удасться обойтись без логики, но узнаешь, что они делают.
> Изнутри хостинга забирай серты с пристежной машины для скачивания.а как они на этой машине окажутся?
> Про API уже сказали: или сам пишешь логику, или чужие скрипты. Чужие
> скрипты можно почитать.Успехов тебе в почитании сертбота.
Пусть играются. Даже если Let's Encrypt сломается/заблокируют всегда можно поднять свой УЦ и выпустить сертификаты.
Конечно, всегда. Поднять свой УЦ можешь каждый день. Разрешаю.
По сложности как замена Докера на Шелле, примерно - https://github.com/p8952/bockerС мануалами на перевес уговаривается за разумное время. Понятно, что не покупное пропри решение от ведущих. Но за разумное время.
чем не устраивает минцифры?
Для банка и отчетности сертификаты от Минифры в самый раз. Эти сертификаты больше для крупных ресурсов, а малые будут жить на Let's Encrypt до блокировки России самим УЦ.
> с оглядкой на обеспечение безопасности и стабильности.Писали и оглядывались, оглядывались и писали.
Что ж ты будешь делать... :))))))))))))))