The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Восстановлен код UNIXv4, первой ОС с ядром на языке C. Уязвимость в UNIXv4"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Восстановлен код UNIXv4, первой ОС с ядром на языке C. Уязвимость в UNIXv4"  +/
Сообщение от opennews (ok), 09-Янв-26, 11:16 
В конце прошлого года во время уборки в вычислительном центре Университета Юты была обнаружена архивная магнитная лента с кодом операционной системы UNIX V4, которая была разработана в 1973 году для ЭВМ PDP-11/45 и считалась утерянной. UNIXv4 продолжал развитие выпущенной за год до этого  операционной системы UNIXv3, в которой впервые был использован язык Си и неименованные каналы. Особенностью UNIXv4 стала переработка ядра на языке Си. Код ядра UNIXv4  был написан Кеном Томпсоном, а драйверов - Деннисом Ритчи...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=64498

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от 12yoexpert (ok), 09-Янв-26, 11:16   –7 +/
> Восстановлен код UNIXv4, первой ОС с ядром на языке C.
> продолжал развитие выпущенной за год до этого операционной системы UNIXv3, в которой впервые был использован язык Си

что-то я ничего не понял. в v3 ядро было не на си? нужно почаще вставлять "впервые" в новость, и всё будет хорошо

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5, #6

3. Сообщение от Аноним (6), 09-Янв-26, 11:21   –24 +/
Си был исконно с первейших версий придуман чтобы писать овнокод по типу такого while(*q++ == *p++); в su.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #18, #134, #222, #269, #298, #303, #391

5. Сообщение от Stanislavvv (ok), 09-Янв-26, 11:22   +21 +/
Таки сходивши по ссылкам, подтверждаю — у v3 ядро было на асме.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

6. Сообщение от Аноним (6), 09-Янв-26, 11:26   +13 +/
Конь-пилятор Си уже был, но сам юникс ещё не переписали. Могу порекомендовать книгу "Время UNIX" Брайан Керниган (тот самый из Керниган и Ритчи) об истории создания unix.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #484

8. Сообщение от Аноним (-), 09-Янв-26, 11:27   –6 +/
> Код содержал уязвимость, приводящую к переполнению буфера из-за копирования
> вводимого пользователем пароля в фиксированный 100-символьный массив без проверки
> размера вводимых данных.

Реликтовый вулн дидов. Почти как первая ошибка ворлонов с которой начались их неудачи и обломы.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #15, #52, #285, #308

9. Сообщение от Аноним (9), 09-Янв-26, 11:27   +16 +/
Помню как разработчики sendmail в начале 1990-х отказывались править переполнение буфера, мотивируя тем, что вызывающий переполнение SMTP-запрос не соответствует RFC. Типа, запросы, соответствующие RFC обрабатываются без ошибок, значит всё Ок.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #13

12. Сообщение от Аноним (12), 09-Янв-26, 11:35   +1 +/
Для тех кто помнит pe2 (dos)
https://snobol5.org/pe3doc.htm
работающий редактор на SNOBOL !!!
Ответить | Правка | Наверх | Cообщить модератору

13. Сообщение от IdeaFix (ok), 09-Янв-26, 11:38   –3 +/
Сейчас перекладывание ответственности вышло на новый уровень, теперь пеняют не на RFC а на зеркало перед юзером. Типа мы тебе из коробки сломали вызывающий впросы функционал, но на свой страх и риск ты его можешь включить тут. Что? Базовый функционал говорите? Ну да... мы тебе из коробки сломали базовый функционал, но на свой страх и риск ты его можешь включить тут.

И одно дело когда то нтфс на запись, а другое - когда нода там или томкет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

14. Сообщение от Аноним (-), 09-Янв-26, 11:45   –2 +/
> приводящую к переполнению буфера
> "кому может понадобиться вручную вводить слишком длинные строки".

У них никогда не было кота?! Или детей?
(Не, ну детей к дорогущему компу может и не подпускали)

> мало кто обращал внимание на переполнения буферов

И с того времени мало что изменилось :)

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #20, #53, #149

15. Сообщение от Аноним (6), 09-Янв-26, 11:46   –3 +/
На ассемблере по другому и не напишешь. Или придется городить огороды размером больше самого приложения на каждый чих.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #60

16. Сообщение от Фнон (?), 09-Янв-26, 11:46   –2 +/
> утилита включала менее 50 строк кода
> переполнению буфера из-за копирования вводимого пользователем пароля в фиксированный 100-символьный массив без проверки размера вводимых данных.

Ахахаха, диды писали!
Вот и ответ на вопрос "сколько строк на СИ достаточно чтобы написать CVE")))

> Код ядра UNIXv4 был написан Кеном Томпсоном, а драйверов - Деннисом Ритчи.

Есть ли более настоящие СИшники чем эти два?

> Добавление проверок размера вводимых вручную данных рассматривалось как добавление лишнего кода

И тааак сойдет! (с)

> аварийное завершение при переполнении воспринималось как неуклюжая форма реагирования на некорректные входные данные.

Поэтому мы просто не будем реагировать. Никак.
Испортим память или подарим рут доступ.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #22, #76, #385, #493

18. Сообщение от aname (ok), 09-Янв-26, 11:48   +10 +/
Пользуйся
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #24

20. Сообщение от Аноним (6), 09-Янв-26, 11:48   +6 +/
А котов типа подпускали? Тогда если ты там что-то переполнил ты не в другой стране сидишь, а в специализмрованном помещении с пропускной системой и охраной. Если что-то сломал, охрана будет сначала бить, а потом думать. Вот и не было переполнения тогда. Грамотное обустройство рабочего пространства.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #36, #165

22. Сообщение от aname (ok), 09-Янв-26, 11:50   +/
То ли дело CVE в Binder.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #25

24. Сообщение от Аноним (6), 09-Янв-26, 11:51   –3 +/
Сомнительно, но Окэй.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

25. Сообщение от Фнон (?), 09-Янв-26, 11:53   –3 +/
CVE в Binder привело к падению.
Память не была испорчена, повышение привилегий или исполнение чужого кода не произошло.

К чему приводят CVE в СИшной дpыстине мы читаем вот прям на этом сайте каждую неделю-две.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #111, #242

27. Сообщение от Аноним (-), 09-Янв-26, 11:54   +8 +/
> 93-летний Дуглас Макилрой

Он может гордиться следующими поколениями, которые совершают абсолютно такие же ошибки в 2025м что и они в 1973м.

Вот она настоящая преемственность поколений!
Пронесем сишные дыры через века!

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #118, #429

28. Сообщение от Аномалии (?), 09-Янв-26, 11:55   +1 +/
Налепили, прибили, скотчем примотали и в продакшн. Думать они начали с выпуском Plan 9, но уже было поздно
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #210

30. Сообщение от Аноним (-), 09-Янв-26, 11:58   +3 +/
> Добавление проверок размера вводимых вручную данных
> рассматривалось как добавление лишнего кода

Бугуга, с тех пор ничего и не изменилось)))
Зато пару тактов можно будет сэкономить.

Хотя нет, не пару...
В недоязычке нет строк, а длина char* считается за O(N).

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #42

31. Сообщение от Аноним (31), 09-Янв-26, 12:03   +2 +/
> 1973
> Кен Томпсон
> Код содержал уязвимость, приводящую к переполнению буфера

Хотелось бы услышать комментарии ProfessorNavigator, который любит рассказывать, что проблема в деградировавших современных программистах. Как это понимать? Или Кену Томпсону тоже капитализм подгадил?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #33, #74, #124

32. Сообщение от Аноним (32), 09-Янв-26, 12:06   +/
Прикольно
V4 действительно считалась потерянной
Более менее развитие шло с V5
Ответить | Правка | Наверх | Cообщить модератору

33. Сообщение от Аноним (-), 09-Янв-26, 12:07   +4 +/
> Или Кену Томпсону тоже капитализм подгадил?

Конечно!
Проприетарный UNIXv3 переписывали для проприетарного ЭВМ PDP-11/45 в виде проприетарного
UNIXv4 и все это делалось в корпе DEC.
Чуешь запах капитализма?!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

34. Сообщение от Аноним (-), 09-Янв-26, 12:11    Скрыто ботом-модератором–2 +/
Ответить | Правка | Наверх | Cообщить модератору

35. Сообщение от Аноним (35), 09-Янв-26, 12:12   +1 +/
Впечатлило два момента:

1. Как просто было переписать на другой язык. Вот просто взяли и переписали следующую версию на сях. Не то что нынешние на раст. С другой стороны, есть подозрение, что переписывание на си давало бОльшую скорость написания кода по сравнению с ассемблером, что в случае с переходом с сей на раст не вариант (был бы не вариант даже при переходе на якобы более высокоуровнувую яву).

2. Первая сишная уязвимость появилась фактически при первом серьёзном использовании языка. Символично. Как выше пишут, преемственность поколений.

П.С. Сам растохейтер.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #39, #40, #41, #80

36. Сообщение от 12yoexpert (ok), 09-Янв-26, 12:16   +5 +/
> А котов типа подпускали?

а что ты коту сделаешь в его квартире? ты обслуга, подай-принеси, не более

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20 Ответы: #37, #129

37. Сообщение от Аноним (6), 09-Янв-26, 12:19   +4 +/
Какой pdp-11 в квартире?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #160, #404

38. Сообщение от Аноним (38), 09-Янв-26, 12:19   +2 +/
> Добавление проверок размера вводимых вручную данных рассматривалось как добавление лишнего кода

Сами исконные диды, создатели языка, заложили эту идеологию разработки ПО. Это прекрасно. Можно добавлять в методичку по переходу на раст.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #44

39. Сообщение от Аноним (6), 09-Янв-26, 12:22   +5 +/
Хочешь прикол? Они переписывали на печатной машинке (телетайпе) и у них не было кнопки backspace по факту могли переписывать только всю строку заново при опечатке.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #221

40. Сообщение от Аноним (40), 09-Янв-26, 12:25   +1 +/
С ассемблера на С переписать действительно (было) несложно. Особенно если знать ассемблер (а ведь есть и уровень ниже - машинных кодов, я с них и начинал - писал байтики в шестнадцатеричном редакторе). С - всего лишь следующая стадия макро-ассемблера. Обратное  (фактически компиляция) гораздо сложнее, ибо нужно хорошо понимать как работает железо, то есть процессор, память, порты и тд. И чем дальше тем хуже: нынешние си погроммисты (кроме системщиков, как правило) не имеют представления о том как железо работает вообще. С одной стороны они пишут код для абстрактной машины (то есть переносимый), с другой - этот код может быть хоть и рабочий (с точки зрения процессора, не факт что периферии), но неоптимален.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35

41. Сообщение от Анонимусс (?), 09-Янв-26, 12:27   +4 +/
> Вот просто взяли и переписали следующую версию на сях.

Потому что сама ОС занимала всего "27 тысяч на языке Си + 30к ассемблера".
А su - 50 строк. Сравни это напр. с современным su-common.c - 1252 строки [1]
Это в 25 раз больше.

В gnu core utils - 62833 строк чистого Си кода без хедеров и обвязок на шеле, перловке и прочем. В одном cksum.c - больше 1800 строк [2]

Просто программы были маленькие. Прибитые к конкретному железу.
И умели они примерно ничего.

> переписывание на си давало бОльшую скорость написания кода по сравнению с ассемблером,
> что в случае с переходом с сей на раст

А разве раст ставит задачу ускорения написания кода?
С быстрым овнокодингом сишники и так справляются на отлично.
Если нужно "писать" быстро - то можно и ллмку запустить, качество вполне вероятно будет не хуже))
Там задача сделать код менее дырявым, с чем он прекрасно справляется.

------------------------------------------------------------------------
[1] github.com/util-linux/util-linux/blob/master/login-utils/su-common.c
[2] github.com/coreutils/coreutils/blob/master/src/cksum.c

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35

42. Сообщение от Аноним (42), 09-Янв-26, 12:32   +/
А за какое время в расте длина char* считается?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #46, #47

44. Сообщение от Аноним (-), 09-Янв-26, 12:36   +/
> Сами исконные диды, создатели языка, заложили эту идеологию разработки ПО. Это прекрасно.

"СИ мы пишем овнокод прям с самого создания" !

Отличный лозунг для отличного языка)))

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #38 Ответы: #59

45. Сообщение от Аноним (31), 09-Янв-26, 12:38   +/
> По словам Дугласа, до появления червя Морриса в 1988 году мало кто обращал внимание на переполнения буферов. Добавление проверок размера вводимых вручную данных рассматривалось как добавление лишнего кода, а аварийное завершение при переполнении воспринималось как неуклюжая форма реагирования

Откровенно говоря, лучше бы Дуглас Макилрой вообще ничего не комментировал. Ибо, помимо прочего, он рассказал о:

"Dennis once fed a couple-of-thousand-byte line on standard input to
everything in /bin. Crashes abounded, but so what? Wasn't a crash just
an ungraceful way for a program to say "I can't handle this"? Not
until the Morris worm (1988) did folks wake up to the real danger of
overflows."

То есть еще в семидесятых корпоративные работники НАМЕРЕННО писали спустя рукава уязвимый, крашашийся г*код и выкатывали его в продакшн! А неладное начали подозревать только когда их ВНЕЗАПНО поимел червь Морриса.

Вот так вот один из тех самых "дидов" помножил на ноль россказни местных экспертов о прекрасном прошлом, когда легендарные деды (не то, что нынешние некомпетенты!) писали надежный код и создавали изящную архитектуру.

А в реальности-то, оказывается, дичь была еще похлеще, чем современное "тяп-ляп - и в продакшн". 😂

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #50, #51, #57, #75, #152, #338

46. Сообщение от Аноним (-), 09-Янв-26, 12:40   +1 +/
1. А причет тут раст?
2. В нормальных языках есть тип String, в котором при создании записывается кол-во символов.
Это позволяет оперировать с длинной строки (например создавать буфер нужного размера) без её обхода.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42 Ответы: #444

47. Сообщение от Анонимусс (?), 09-Янв-26, 12:46   +3 +/
> А за какое время в расте длина char* считается?

В расте есть нормальные строки вместо char*
И их длина считается за O(1) - там просто возвращается значение.

    pub const fn len(&self) -> usize {
        self.vec.len()
    }
doc.rust-lang.org/src/alloc/string.rs.html#1849
doc.rust-lang.org/src/alloc/vec/mod.rs.html#2912

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42 Ответы: #78, #90, #345

50. Сообщение от Аноним (445), 09-Янв-26, 12:49   +3 +/
Зато сегодня они могут кряхтеть и бухтеть:
"воооот! смyзихлебы!! а вот в мое время! а вот мы!!"

А тут выходит что СИ это язык от бракоделов для бракоделов)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45

51. Сообщение от Аноним (51), 09-Янв-26, 12:50   +4 +/
Вызывает восхищение, что чел не просто дожил до 93 лет и способен говорить осмысленные вещи, но и помнит технические подробности о том, чем занимался лет 50 назад.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #342

52. Сообщение от сисикеч (?), 09-Янв-26, 12:50   +5 +/
Охх, ты ж! Вавилон 5 подкатил!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

53. Сообщение от Аноним (53), 09-Янв-26, 12:52   +2 +/
Какие коты??
Просто коpоpaтивный paб устав грести на гaлepe упал моpдой лица прям на клавиатуру терминала. И набрал больше чем 100 символов.

Хотя на самом деле все было проще.
"Dennis once fed a couple-of-thousand-byte line on standard input to everything in /bin. Crashes abounded, but so what? Wasn't a crash just an ungraceful way for a program to say "I can't handle this"? Not until the Morris worm (1988) did folks wake up to the real danger of overflows." - слова того же Макилроя.

Им было просто плевать на качество, на безошибочность, на надежность.
Реальность потом ударила по лицу, но привычка писать дpmовый код уже пошла в (kalовые) массы СИшников.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #62, #65, #85, #347

56. Сообщение от Аноним (56), 09-Янв-26, 12:59   –1 +/
Красивое.
Ответить | Правка | Наверх | Cообщить модератору

57. Сообщение от Аноним (32), 09-Янв-26, 13:00   +/
На тот момент важна была работоспособность в принципе
А не надежность , потому что надежность на неработающей системе не имеет смысла
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #70

58. Сообщение от Аноним (58), 09-Янв-26, 13:00   +2 +/
Хейтеры не желают понимать очевидных вещей. Все версии Юникса это закрытые и проприетарные продукты. Исходные коды которого запрещалось свободно копировать и передавать. Юникс всегда был закрытым и коммерческим. Сейчас все Юниксы мертвы, кроме разве что Солариса.

И только с появлением свободных клонов Юникса, таких как BSD-systems и GNU/Linux наши системы стали безопасными. Да, появляются время от времени уязвимости, но закрытие их стало обычной рутиной. На сегодня GNU/Linux и BSD-systems - по-факту, самые безопасные операционные системы. Да, именно копилефт и пермиссивка сделали код безопасным. Потому-что много людей могут посмотреть исходники и выявить уязвимости. В свободный код проблематично внедрить бэкдор.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #63, #68, #71, #107, #317

59. Сообщение от Аноним (59), 09-Янв-26, 13:02   +/
Тогда падение в невероятных условиях не считалось значительной проблемой. Язык тут ни при чём, просто программировать тоже надо уметь. И программировать ещё не изобрели, когда придумали ассемблер.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #77

60. Сообщение от Аноним (60), 09-Янв-26, 13:02   +12 +/
>На ассемблере по другому и не напишешь.

Сразу видно авторитетного писателя на асме :)))

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

61. Сообщение от Аноним (174), 09-Янв-26, 13:06   +/
Откопали копролитЪ.
Умудлились восстановить.
А там  ̶а̶р̶м̶я̶н̶е̶ ̶в̶ ̶н̶а̶р̶д̶ы̶ ̶и̶г̶р̶а̶ю̶т̶ классическая сишная дыра!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #64

62. Сообщение от Аноним (-), 09-Янв-26, 13:07   +/
>Им было просто плевать на качество, на безошибочность, на надежность.

А вот тут явно передёргиваешь.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53 Ответы: #66

63. Сообщение от Аноним (174), 09-Янв-26, 13:09   +/
> На сегодня GNU/Linux и BSD-systems - по-факту, самые безопасные операционные системы.

Ну да, ну да.
"Продемонстрировано несколько способов обхода изоляции FreeBSD jail
На GitHub опубликован код 5 прототипов эксплоитов...
...в ходе исследования выявлено около 50 проблем
Большая часть проанализированного кода написана в 1990-х годах и давно не подвергалась аудиту." opennet.ru/opennews/art.shtml?num=64550

"Диды писали" (с)

Прям эталон бизапасного кода! Тысячи глаз смотрели не туда! Может они просто смотрели шоколадными?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #67, #256

64. Сообщение от Аноним (-), 09-Янв-26, 13:09   +/
Дыра для сегодняшнего времени. Для тех далёких времён, это не считалось дырой.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #61 Ответы: #69

65. Сообщение от Аноним (60), 09-Янв-26, 13:10   +3 +/
>Им было просто плевать на качество

Ты так говоришь, как будто сейчас что то изменилось. Нет, просто за время компьютерной эпохи напридумывали костылей, которые мало по малу поддерживают "писателей". У меня нет сомнений, что если посадить рядом дидов и современных вебописателей и выдать им одинаковые инструменты, то результат будет не в пользу современных поколений.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53 Ответы: #72

66. Сообщение от Аноним (-), 09-Янв-26, 13:13   +5 +/
>>Им было просто плевать на качество, на безошибочность, на надежность.
> А вот тут явно передёргиваешь.

Блин, я спецом привел цитату

"Crashes abounded, but so what?"

В ней прямым тесктом написано "Упало? Да поxep!"


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #355

67. Сообщение от Аноним (-), 09-Янв-26, 13:13   –2 +/
Ты явно передёргаваешь. На самом деле это означает что код совершенствуется, и становится безопаснее.

Windows OS, macOS, проприетарные российские дистрибутивы - вот что реально опасно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #63 Ответы: #73, #130

68. Сообщение от Анонимусс (?), 09-Янв-26, 13:16   +3 +/
> В свободный код проблематично внедрить бэкдор

Что значит проблематично?
Просто "забываешь" проверить размер буфера и кто угодно может удаленно выполнить код.
Потом просто говоришь "ну забыл, с кем не бывает!"

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58 Ответы: #226

69. Сообщение от Аноним (-), 09-Янв-26, 13:17   –1 +/
> Дыра для сегодняшнего времени. Для тех далёких времён, это не считалось дырой.

Какого года червь Морриса?
На минуточку код по таким же "стандартам" писали и 80 и в 90.
Некоторые пишут и сейчас.

Просто всем было плевать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64 Ответы: #79, #91, #489

70. Сообщение от Аноним (145), 09-Янв-26, 13:20   +2 +/
> На тот момент важна была работоспособность в принципе

А вот Дуглас говорит что:

"nobody would ever want to input a 200-character line, say, so why bother writing
the extra code to catch it?"

То есть реальная причина была в "да и так сойдет". Но тебе, конечно, виднее, что там было важно на тот момент...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57 Ответы: #180, #344

71. Сообщение от Аноним (59), 09-Янв-26, 13:22   +/
Так хэйтеры именно поэтому и облизывают дырявую проприетарь. Нет, говорят, не нужны нам ваши любительские дилетантские поделки. С другой стороны, у виндоус тоже много поклонников.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

72. Сообщение от Аноним (-), 09-Янв-26, 13:24   –1 +/
> Ты так говоришь, как будто сейчас что то изменилось.

Да, изменилось.
Как минимум прользователь будет расстроен если его комп или телеон ломанут.

А для программеров такой маневр может стоить работы, а его компании вообще существования (попадаешь на штраф и банкротишься).

> У меня нет сомнений, что если посадить рядом дидов и современных вебописателей и выдать им одинаковые инструменты, то результат будет не в пользу современных поколений.

Каких наƒиг инструментов?
В СИ того года не было условно оператора чтобы написать
if (sizeof(password) > validSize)
   goto ohSHIT
?

Чего блuн не хватало?
Или просто секономили пару строк, потому что "ну упало, ну и xul'e"))

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #65 Ответы: #88, #89, #127

73. Сообщение от Аноним (145), 09-Янв-26, 13:35   +/
> Ты явно передёргаваешь. На самом деле это означает что код совершенствуется, и становится безопаснее.

Не передергивает он. Поток дыреней, безостановочно льющийся более поувека, не очень совместим с термином "безопасность".

Эти системы, их технологии и походы разработки в плане безопасности двно и безвозвратно скомпрометированы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #67 Ответы: #105, #331

74. Сообщение от Анонимусс (-), 09-Янв-26, 13:37   +4 +/
> Или Кену Томпсону тоже капитализм подгадил?

Разумеется. Менеджер корпорации  ̶у̶г̶н̶е̶т̶а̶л̶ ̶п̶р̶о̶л̶е̶т̶а̶р̶и̶а̶т̶ подгонял разработчиков ради сиюминутной наживы, заставлял работать в нечеловеческих условиях и не организовал правильный режим труда. А государство не предоставило им бесплатное образование, поэтому они и оказались такими некомпетентными.

А вот если бы был комунизм, то не было бы у вас ни Unix, ни PDP, ни DEC!
Сидели бы со счетами и никаких переполнений буфера не произошло бы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #121, #186

75. Сообщение от Аноним83 (?), 09-Янв-26, 13:39   +4 +/
Вы так и не поняли нифига.

Идея была в том, что прогу писали для выполнения конкретной функции.
Подразумевалось что на входе для получения нужного результата подают корректные входные данные.
Если данные не корректны - то пофиг что оно крашится, юзер ССЗБ.

Писать 100500 проверок, валидаторов и тестов - не было на это ресурсов.
Даже одна проверка в цикле запросто роняла производительность на заметную величину, а если всё обложить проверками как нынче принято - то итоговая производительность запросто может рухнуть более чем в 2х, что тогда было не приемлемо и воспринималось: сделать тормозную прогу только для того чтобы пользователь получил красивое сообщение об ошибке.

Так же не забывайте что писалось оно часто для себя и своего окружения, никаких какеров там не было - тупо ломать самого себя. Поэтому скрашилось - ну значит фигню вёл, попробуй ещё раз.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #82, #99, #235, #239

76. Сообщение от Совершенно другой аноним (?), 09-Янв-26, 13:42   +/
Unix V4 - дата создания 1973 год.
UUCP (первые хоть какие-то сетевые средства) - дата создания 1976 год, более-менее широкое внедрение 1978 год (было подключено аж 82 машины внутри Bell Labs).
Сетевой стек (4BSD, уже не совсем, и даже совсем не Unix V4, а что-то около Unix V7) - дата создания 1981 год.

Т.е. удалённо этой уязвимостью воспользоваться никак не получилось-бы.

Далее - тогда ещё в разные ROP (Return-Oriented Programming) не умели, да и букв таких не знали, поэтому максимум что Вы могли - это обеспечить SIGSEGV, который обеспечивало ядро ОС. Современные языки при переполнении буфера вызывают абстрактный panic(), который, по итогу, выполнит практически то-же самое, только без участия ядра.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16 Ответы: #102, #362

77. Сообщение от Аноним (-), 09-Янв-26, 13:42   +/
Что значит "программировать "не придумали?
Они не могли написать "если пароль больше буфера goto error"?
Могли.

Задумывались он о такой возможности?
Задумывались.
Дугласм сам пишет "nobody would ever want to input a 200-character line, say, so why bother writing
the extra code to catch it?"

Им было просто плевать.
Это 1973 год.
Уже изобретены Паскаль, Smalltalk.
Алгол был еще в 60х, как Симула и Фортран.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #59 Ответы: #96, #106

78. Сообщение от Аноним83 (?), 09-Янв-26, 13:42   +2 +/
Таких "нормальных строк" в С в разных либах/фреймворках вагон и маленькая тележка, просто их никто в стандарт не тащит, потому что это лишнее.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47 Ответы: #144, #150, #253, #294

79. Сообщение от Аноним (6), 09-Янв-26, 13:42   +1 +/
>> Дыра для сегодняшнего времени. Для тех далёких времён, это не считалось дырой.
> Какого года червь Морриса?
> На минуточку код по таким же "стандартам" писали и 80 и в
> 90.
> Некоторые пишут и сейчас.
> Просто всем было плевать.

Отец Морриса, на секундочку, работал в АНБ.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69

80. Сообщение от нах. (?), 09-Янв-26, 13:43   +1 +/
> Как просто было переписать на другой язык.

только сперва понадобилось создать этот самый язык. Предназначенный именно для этого - быть тем же ассемблером но более удобочитаемым и требующим меньше колотить по клавишам.

До них ничего подобного не существовало - мертворожденные прожекты не в счет.

Ну и переписывали разумеется не ради самого переписывания, а потому что в v3 по сути работала одна-единственная программа, ставшая на тот момент уже ненужной. Чтобы система развивалась - проще оказалось переписать часть уже существующего кода, которую легче потом было бы дополнять.

> Не то что нынешние на раст.

потому что нескучный йезычок придумали в недрах мразилы, где проблему что кодить на нем, бегая от борова, получается адски долго - можно было завалить человеческим ресурсом. (но тут пришли _действительно_ эффективые менеджеры, и выкинули человеков вместе с созданными ими проблемами за борт с пароходика)

И внезапно - поддержка хрустокода оказалась сложнее (а не наоборот как у дедов). Потому что почти никто в этих нагромождениях закорючек не может разобраться. (А вот казалось бы - что может быть хуже c++ последних версий? Смогли!)

> Первая сишная уязвимость появилась фактически при первом серьёзном использовании языка.

тебе же ясно говорят - и это совершенно никого не колебло, вообще. На бесконечные проверки проверок не было просто ни мощностей ни времени. А то так и сидели бы как эти вон со своим ресдохом, где все безопастненько, только ничего не работает и не будет.

Большая часть увизгвимостей в общем-то существует только в воображении придумывателей цвешек и по сей день.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35

82. Сообщение от Аноним (-), 09-Янв-26, 13:44   +/
> Вы так и не поняли нифига.

Да, только ты один тут владеешь сакральным знанием)

> Так же не забывайте что писалось оно часто для себя и своего окружения, никаких какеров там не было - тупо ломать самого себя. Поэтому скрашилось - ну значит фигню вёл, попробуй ещё раз.

Про червя Морриса он вспоминает просто так?
Или в контексте "мы писать дрмовый код, а потом нам надрали зад".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #100, #104, #117

83. Сообщение от Admino (ok), 09-Янв-26, 13:45   +1 +/
> Выявленную проблему прокомментировал 93-летний Дуглас Макилрой (Douglas McIlroy)

Ух ты, дедуля ещё живой и комментирует! Классный чувак, долгой жизни ему!

Ответить | Правка | Наверх | Cообщить модератору

84. Сообщение от Аноним (84), 09-Янв-26, 13:45   –5 +/
Ознакомился с глупостями, начиная с первого комментатора. Заучите наизусть: использование программы не по назначению не означает ее уязвимости.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #93, #94

85. Сообщение от Аноним (6), 09-Янв-26, 13:45   +/
Ну вот упал он лицом и куда-то там вышел. Комп завис, и? Какая угроза пойяси. Лишний раз перезагружаться? Ну так перезагрузись не быкуй.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53

86. Сообщение от Аноним (-), 09-Янв-26, 13:46   –2 +/
> Код ядра UNIXv4 был написан Кеном Томпсоном,
> а драйверов - Деннисом Ритчи.
> Код содержал уязвимость, приводящую к переполнению буфера

Если это не Настоящие™ Сишники™, то кто тогда достоен этого звания?!
А существуют ли Настоящие™ Сишники™ вообще???

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #101

88. Сообщение от Аноним (6), 09-Янв-26, 13:48   +/
Тогда быстродействие считали в тактах процессора. Что даёт это твоя проверка в долларах? Ненужную работу? А чего может ещё игру тетрис туда добавить?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72 Ответы: #119, #145

89. Сообщение от Аноним83 (?), 09-Янв-26, 13:48   –2 +/
Там поди какойнить gets(buff); используется для чтения ввода, он не умеет в размер буфера.
https://www.geeksforgeeks.org/c/gets-in-c/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72 Ответы: #147

90. Сообщение от нах. (?), 09-Янв-26, 13:49   +/
>> А за какое время в расте длина char* считается?
> В расте есть нормальные строки вместо char*

проблема только в том что они - в хрусте.

> И их длина считается за O(1) - там просто возвращается значение.

ты и на си тоже вполне можешь заранее посчитать значение и сохранить отдельно.
Почему-то так почти никто не хочет делать. (В том числе и потому что чаще всего нам не нужно это знать вообще.)

Причина банальна - в процессоре нет никаких строк. И в памяти их нет. Есть только последовательности байт.
Это просто синтаксический сахарок. Каждый раз как тебе приходится взаимодействовать с внешним миром из твоего нескучного йезычка - сахарок приходится отложить в сторонку и заново учиться работать с сырыми данными из недоверенного источника.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47 Ответы: #153

91. Сообщение от Аноним (91), 09-Янв-26, 13:49   +1 +/
Ты в глаза долбишься.

> Какого года червь Морриса?

1988 года. А код UNIXv4 какого года? 1972-го.

Читай всю новость, прежде чем кидаться комментировать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69 Ответы: #109

93. Сообщение от Аноним (6), 09-Янв-26, 13:51   +1 +/
В каком министерстве можно получит точный номер и ОКВЭД назначения программы? Что делать с программами не внесёнными в реестр министерства?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84 Ответы: #97, #259

94. Сообщение от нах. (?), 09-Янв-26, 13:52   +/
извини, но su использовалась по назначению  - для получения рутовых прав. И если она это делала даже если ты не знаешь пароля рута - значит это таки уязвимость.

Хотя и чисто теоретическая - кому был тот пароль нужен, мог его у Кена просто спросить.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #84

96. Сообщение от нах. (?), 09-Янв-26, 13:54   +/
> Это 1973 год.
> Уже изобретены Паскаль, Smalltalk.
> Алгол был еще в 60х, как Симула и Фортран.

ну вперед, напиши ОС (или хотя бы попробуй переписать с ассемблера) на smalltalk.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #133

97. Сообщение от Аноним (84), 09-Янв-26, 13:54   +/
Обратитесь к разработчикам. Определение назначения - их прерогатива. Только сначала лингвистические навыки подтяните, а то не поймут и не ответят.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93

99. Сообщение от Аноним (145), 09-Янв-26, 13:55   +1 +/
> Подразумевалось что на входе для получения нужного результата подают корректные входные данные. Если данные не корректны - то пофиг что оно крашится, юзер ССЗБ.

Ну да, а потом пришел червь Морриса, и они сделали удивленные глаза. И, главное, зачем-то полезли все исправлять.

> Даже одна проверка в цикле запросто роняла производительность на заметную величину

Очень актуально для su, который читает пароль из stdin. То ли дело бежать по char* в поисках нуля за O(n).

Твоя экспертиза - 10/10.

> Так же не забывайте что писалось оно часто для себя и своего окружения, никаких какеров там не было - тупо ломать самого себя

Что ты несешь? Unix - коммерческая ОСь.

> Вы так и не поняли нифига.

Сказал тот, кто промазал по всем пунктам. 😂

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #110, #167

100. Сообщение от Аноним (40), 09-Янв-26, 13:56   –1 +/
Не надо путать причину и следствие. Пока не появился червь морриса никто не задумывался об уязвимости. Грубо говоря, о заборах, дверях и замках стали задумываться только после того как появились воры. Есть действительно места, где нет воров - там не строят стен и заборов . Зачем? Да, я лично бывал и видел, такое в Средней азии в советское время было сплошь и рядом. Есть более современная расхожая байка про западного аудитора в Японии - он не мог объяснить что  склад с запчастями должен запираться. Японцы не могли понять зачем - у них в фирме все равно как в семье. И никто никогда ничего не крал.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82 Ответы: #215

101. Сообщение от Аноним (84), 09-Янв-26, 13:56   +1 +/
"Настоящим" без разницы, на каком языке создавать выдающиеся исходники. Собственно, это понятно из текста новости.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #86 Ответы: #330

102. Сообщение от Анонимусс (-), 09-Янв-26, 13:57   +1 +/
А кто сказал что это код не перекочевал дальше?
Вот напр. тот же файл в UNIX V
github.com/ngn999/UNIX-System-V/blob/182dea74d55cb447d1b0adba2d62b8f8cdcdd392/usr/source/s2/su.c#L4
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76

104. Сообщение от Аноним83 (?), 09-Янв-26, 13:58   +1 +/
Червь Морриса был уже когда было написано много всего.

Представь что у тебя был комп без сети, и ты лет 20 прогал на нём, иногда обменивась прогами с друзьями через дискеты - зачем тебе парится о безопасности какой то или красивых сообщениях об ошибках вместо крашей?
Притом 100% известно что лишние проверки тормозят выполенение программы от 5% до 80%, а комп у тебя и так кое как ворочается, и сложные рассчёты может сутками делать до результата.

После червя стало по тихоньку доходить что особенности программ для которых они не написаны могут использовать другие и иногда для причинения вреда.
Но тема производительности всё ещё была очень актуальна, поэтому до повсеместного внедрения инета (читай года до 2000-2010) на это не сильно обращали внимание.

Тот же ненавистный вечно дырявый зиродеями и зирокликами Flash player все не то что терпели а радостно ставили себе в систему потому что это был единственный(!) способ получать контент в виде масянь, игор и ютуба.
Не было просто другого способа это получить.
А флешплеер делал это всё потому что не тормозил так сильно - читай там не было 100500 проверок на каждый чих.


А теперь ответь на вопрос честно: ты бы предпочёл смотреть видосики с ютуба и играть в игры или сидеть без всего этого в безопасности?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82 Ответы: #237

105. Сообщение от алек емпире (?), 09-Янв-26, 14:00   +/
мы хотя бы может знать что эти дыры исправлены, в отличии от проприетарщины, в которой могут умолчать о уязвимости
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73 Ответы: #116

106. Сообщение от Аноним (59), 09-Янв-26, 14:00   +/
Опять же, откуда ты узнаешь, сколько байт ввели? Это надо счётчик для каждого символа, дополнительные проверки. В дополнение к 200 уже потерянным байтам. А вот каким образом в grub проверку пароля можно обойти нажав backspace несколько раз -- это другой вопрос. Это уже умысел.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77 Ответы: #158, #174, #280

107. Сообщение от нах. (?), 09-Янв-26, 14:00   +/
> Хейтеры не желают понимать очевидных вещей. Все версии Юникса это закрытые и
> проприетарные продукты. Исходные коды которого запрещалось свободно копировать и передавать.

настолько закрытые и настолько запрещалось - что исходник версии которая и работать-то толком еще не умела и существовала в паре десятков экземпляров - нашли в помойке _университета_. (а не в музее at&t каком-нибудь... впрочем в том музее стоит золотая статуя пятнадцатого по счету эффективного менеджера а не это вот все)

> Юникс всегда был закрытым и коммерческим. Сейчас все Юниксы мертвы, кроме

угу. Только раздавался в исходниках всем желающим. Причем универам он обходился совершенно забесплатно. Что и позволило появиться на свет bsd (тогда еще - вовсе не free) и потом на ее основе - тому из чего появился весь современный интернет (все еще тоже ни разу не free).

Жаль что современные университеты кроме снежинок и фрипластелинов похоже уже ничему научить не могут. Но вот уборщица - уборщица в этой Юте оказалась грамотная.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

109. Сообщение от Аноним (-), 09-Янв-26, 14:03   –1 +/
> Ты в глаза долбишься.

Пф, ты сначала мозг включи, а потом оскорбляй.

>> Какого года червь Морриса?
> 1988 года. А код UNIXv4 какого года? 1972-го.

А UNIX System V - 1983.

И что там?
А там та же самая СИшная дpыстня.
github.com/ngn999/UNIX-System-V/blob/182dea74d55cb447d1b0adba2d62b8f8cdcdd392/usr/source/s2/su.c#L4


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #91 Ответы: #112

110. Сообщение от Аноним83 (?), 09-Янв-26, 14:03   –1 +/
> Очень актуально для su, который читает пароль из stdin. То ли дело бежать по char* в поисках нуля за O(n).

Вы бы изучили историю вопроса для начала.
В те времена юзали gets(buff); для чтения ввода, он не умеет в размер буфера.
https://www.geeksforgeeks.org/c/gets-in-c/

Куда вы собрались прикручивать проверку? Внутрь библиотечной функции?
А зачем?
100 сивмволов пароль не корректный, пусть падает - нам не нужно красивое сообщение об ошибке - так тогда думали.


> Что ты несешь? Unix - коммерческая ОСь.

Что это меняет?
Дурака который будет её ломать просто перестанут пускать в машинный зал на посте охраны.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #99 Ответы: #132

111. Сообщение от Аноним (348), 09-Янв-26, 14:07    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #120, #175

112. Сообщение от Аноним (91), 09-Янв-26, 14:08   +/
> Пф, ты сначала мозг включи, а потом оскорбляй.

Повторю: сначала новость полностью читай.

> По словам Дугласа, до появления червя Морриса в 1988 году мало кто обращал внимание на переполнения буферов.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #109 Ответы: #114

114. Сообщение от Аноним (-), 09-Янв-26, 14:09   –1 +/
>> По словам Дугласа, до появления червя Морриса в 1988 году мало кто обращал внимание на переполнения буферов.

Так я и говорю.
Они знали что переполнение это плохо.
Им просто было на это плевать.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #112 Ответы: #123

116. Сообщение от Анонимусс (-), 09-Янв-26, 14:13   –1 +/
> мы хотя бы может знать что эти дыры исправлены, в отличии от
> проприетарщины, в которой могут умолчать о уязвимости

Ну узнал ты что в коде была дыра с 90х и она наконец-то исправлена. Стало легче?
В ссупер свободном гню/ляляксе десять лет жил бекдор от спецслужб США.
А тыщщи глаз долбились в глаз (так себе каламбур, но для пятницы сойдет).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #105

117. Сообщение от Аноним (35), 09-Янв-26, 14:13   –1 +/
> мы писать дрмовый код, а потом нам надрали зад

Перевожу на современный лад: "если программисту нравится код, написанный им год назад, значит он прожил этот год зря". Сейчас же модно такое, даже в среде безопасных яв и прочих яваскриптов и питонов. Почему же вам так не нравится то же самое полвека назад?

И вам уже написали, что в те времена производительность меряли не гигагерцами, а герцами, и понаставленные во все места проверки привели бы к тормозам вплоть до невозможности использовать этот софт.

Поймите, мы не защищаем парадигму программирования без проверок на ошибки/уязвимости, мы объясняем необходимость её использования в те времена. Тогда это было настолько же актуально, как сейчас при программировании домашних страничек никто не пишет 5 строк тестов на каждую строку кода.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #82 Ответы: #238

118. Сообщение от Аноним (118), 09-Янв-26, 14:15   –1 +/
Нынешнему поколению плевать даже на сам Си не то, чтобы на баги Сишные, даже не с точки зрения безопасности, а вообще корректности того или иного алгоритма. Формализм на то и формализм, что думать особо о имплементации не надо. Написал f(x) = y, ну вот и все, и не должно волновать никого кто и что за место этого икса туда пихнет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #275

119. Сообщение от Аноним (-), 09-Янв-26, 14:16   –1 +/
> Что даёт это твоя проверка в долларах? Ненужную работу?

А потом такие
"Бл###! Нам самокопирующийся черяк положил кучу компов! У нас убытки на 100500 баксов!
Как жи это произошло!!"

Ну шо, наэкономили такты?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88 Ответы: #143, #146

120. Сообщение от Аноним (-), 09-Янв-26, 14:17   +/
> Нужно заметить,

Пруфы бы.
А то твое сообщение выглядит как нейрокал без каких либо доказательств.
Что очень печально.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111

121. Сообщение от Аноним (118), 09-Янв-26, 14:19   –1 +/
ну, а в итоге кто больше дров наломал? аксиома ведь - не совершает ошибок тот, кто ничего не делает.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74

123. Сообщение от Аноним (91), 09-Янв-26, 14:31   +3 +/
Неправильно. Они знали, что в тех условиях, в которых создавалось, это не имело значения. Никто ничего умышленно не ломал, люди просто решали свои практические задачи посредством компов, и в основном все они друг с другом были знакомы.

Тебя попросят накидать на баше скрипт конвертации gif в avi - тоже будешь обкладывать его проверками со всех сторон; делать поиск подходящего набора утилит в системе и для каждой найденной утилиты писать свое решение; определять систему для вывода хинта; как их доустановить через конкретный пакетный менеджер? Или сконцентрируешься на решении задачи, которая по итогу займет одну строку?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #114 Ответы: #169, #176, #470

124. Сообщение от ProfessorNavigator (ok), 09-Янв-26, 14:34   +2 +/
> Хотелось бы услышать комментарии ProfessorNavigator

Не буди лихо, пока оно тихо ;) Впрочем - уже поздно, хе-хе.

> Как это понимать?

В новости прекрасно написано - как это понимать. У вас ограничение на длину вводимой строки. Всё, что больше, считается критической ошибкой, поэтому падение программы в данном случае - нормальное поведение. Такой вот способ обработки ошибок был в то время, чтобы не городить лишний огород - процессор то слабее, чем в современной стиральной машине, и памяти, считай, нет (если сравнивать с сегодняшним днём). Впрочем, вам ведь всё равно, про таких говорят: хоть кол на голове теши. И к программированию вы никакого отношения не имеете, вы здесь за другим. Хозяин приказал - вот и страдаете ерундой, вместо того, чтобы подучиться хоть чутка.

> Или Кену Томпсону тоже капитализм подгадил?

Он гадит вообще всем, даже тем, кто так не считает. Падение уровня образования - одно из проявлений. Но и это даже не главное, главное в том, что современная система образования (любая) думать не учит совершенно. Интеллект - это умение принимать нестандартные решения. "Прокачивается" оно только одним способом - постоянной тренировкой мозгов на множестве нестандартных ситуаций. А капиталу такое не нужно - ему нужны биороботы, приставленные к оборудованию. Они в обслуживании дешевле обходятся - сами себя ремонтируют, сами себя энергией обеспечивают. Только вот беда - иногда зарплату платить приходится, иначе разбегаться начинают. Впрочем, это тоже решаемо - можно ведь закабалить кредитами так, что никуда не денутся. А если всё же попробуют - тоже не беда. Старые добрые цепи, пристёгиваемые к чему-нибудь прочному, никто не отменял.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #177, #234, #271

127. Сообщение от Совершенно другой аноним (?), 09-Янв-26, 14:40   +/
скорее всего тогда ещё не было sizeof(), пишут, что он появился во времена Unix V5 и V6, примерно тогда, когда и структуры.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #72 Ответы: #162, #290

129. Сообщение от EuPhobos (ok), 09-Янв-26, 14:48   +3 +/
"в квартире" - вот и дожили, когда у молодняка на уме только "комп в квартире"))
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #36 Ответы: #166

130. Сообщение от Аноним (130), 09-Янв-26, 14:52   +/
В непроприетарном дырени около двух лет живут и никого это не смущает. Разницы в закрытом и открытом в плане безопасности нет совсем.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #67 Ответы: #139

132. Сообщение от Аноним (-), 09-Янв-26, 15:01   +1 +/
> Вы бы изучили историю вопроса для начала.
> В те времена юзали gets(buff); для чтения ввода, он не умеет в размер буфера.

Тоже самое можно и про вас сказать.
Какой нафиг gets(buff) если там прям в коде на 25й строке getchar()

  while((*q = getchar()) != '\n')

Они посимвольно считывали и прекрасно знали сколько символов было введено.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #110 Ответы: #140

133. Сообщение от Дидыemail (ok), 09-Янв-26, 15:03   +/
>напиши ОС (или хотя бы попробуй переписать с ассемблера) на smalltalk.

Да есть уже:
https://wiki.squeak.org/squeak/1762

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #96 Ответы: #156

134. Сообщение от Аноним (134), 09-Янв-26, 15:03   +8 +/
Зато без begin-end-ов :) И что только сишники не придумают, лишь бы на паскале не программировать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #163, #213, #274

139. Сообщение от Экспердодыр (?), 09-Янв-26, 15:28   –1 +/
> В непроприетарном дырени около двух лет живут и никого это не смущает. Разницы в закрытом и открытом в плане безопасности нет совсем.

А в проприетарном - 20 лет. И половину этого времени активно эксплуатируются, а исправлений нет, и не будет, как хозяин решит. И независимый аудит заказать нельзя. И исправления вносить нельзя. Нарушение лицензии, да и код закрыт.
Вот совсем-совсем никакой разницы. Главное, верить джентельменам на слово.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #130 Ответы: #447

140. Сообщение от Аноним83 (?), 09-Янв-26, 15:29   +/
Да, я не смотрел в оригинальный код.
Знали, но не парились, потому что было не понятно чем это грозит, а падение проги от некорректного ввода было нормальным поведением.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #132 Ответы: #142

142. Сообщение от Аноним (-), 09-Янв-26, 15:34    Скрыто ботом-модератором+1 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #140

143. Сообщение от Аноним83 (?), 09-Янв-26, 15:34   +4 +/
Не было раньше такой проблемы, как же вы не поймёте.
Хакера просто перестали бы пропускать на посте охраны в здание где комп.

Это сейчас есть интернет куда легко попасть из любого места и потом тебя трудно найти, а ты можешь кому угодно что угодно слать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #119

144. Сообщение от Аноним (418), 09-Янв-26, 15:35   +/
> просто их никто в стандарт не тащит, потому что

Не лезут. Чтобы структура вела себя как указатель, дополнительно хранящий размер, нужна перегрузка операторов.

Си - это не только близость к железу, но и реалии 70...80-х. Что общего между "%zd" и PRId8? То, что это нормальный подход для 70-х, компайл-тайм наворотов в портативном ассемблере быть не могло, жертвовать здесь производительностью, размером бинарника и нервами разработчика было нормально - ничего лучше вокруг нет и не надорвётся он с тогдашними объёмами кода.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78 Ответы: #198, #314

145. Сообщение от Аноним (145), 09-Янв-26, 15:43   +3 +/
> Тогда быстродействие считали в тактах процессора

И именно поэтому они дергали getc() в цикле?

https://github.com/Equilateral-AI/UnixV4-Resurrection/blob/m...

while((*q = getchar()) != '\n')

Хотя, ты небось код даже не смотрел, не так ли?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #88

146. Сообщение от Аноним (146), 09-Янв-26, 15:44   +2 +/
Какой самокопирующийся червяк в 1973-м году? Тогда весь ARPANET состоял из пяти компьютеров, и там точно был не Unix.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #119 Ответы: #148

147. Сообщение от Аноним (145), 09-Янв-26, 15:44   +2 +/
> Там поди какойнить gets(buff); используется для чтения ввода, он не умеет в размер буфера.

А взять и код посмотреть ты не в состоянии?

https://github.com/Equilateral-AI/UnixV4-Resurrection/blob/m...

   while((*q = getchar()) != '\n')

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #89 Ответы: #154

148. Сообщение от Аноним (-), 09-Янв-26, 15:48   +/
> Какой самокопирующийся червяк в 1973-м году?

В 1988.

> Тогда весь ARPANET состоял из пяти компьютеров, и там точно был не Unix.

Там был таки юникс.

В UNIX System V (1983) овнокод переехал вообще без изменений.

Пруф: github.com/ngn999/UNIX-System-V/blob/182dea74d55cb447d1b0adba2d62b8f8cdcdd392/usr/source/s2/su.c#L4


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #146

149. Сообщение от Аноним (149), 09-Янв-26, 15:50   +1 +/
Вряд ли кто-то пускал котов или детей в офис Bell Labs, и уж тем более в помещения с компьютером.

Тогда к этому относились как к рабочему инструменту для профессионала. Оперативная память измерялась в килобайтах. Каждая лишняя проверка на счету. Без особой необходимости - слишком расточительно.

А потом на этой кодовой базе сделали стек для ARPANET, и открылась целая новая реальность:)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #14 Ответы: #232

150. Сообщение от Аноним (-), 09-Янв-26, 15:50   +/
> Таких "нормальных строк" в С в разных либах/фреймворках вагон и маленькая тележка,

Велосипеды! Покупайте наши велосипеды! Они самые велосипедистые в мире!!

> просто их никто в стандарт не тащит,

Потому что "стандарт" такой же кусок крэпа.

> потому что это лишнее.

Ага, как и bool, который 50 лет был "ненужон ваш bool! хватит и макросной дрыстни!"
Но ВНЕЗАПНО в С23 добавили.

Так что ждем строки.
Лет через 20ть))


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78 Ответы: #159

151. Сообщение от Аноним (418), 09-Янв-26, 15:58   +/
А обои у них неплохие были.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #227

152. Сообщение от Аноним (-), 09-Янв-26, 16:02   –1 +/
> Откровенно говоря, лучше бы Дуглас Макилрой вообще ничего не комментировал.

Та не: он прокомментировал, стало чуть понятнее. Академия уже тогда говорила о том, что проверки размера буферов надо проделывать автоматически. Тогда это означало массивы врезанные в компилятор, и компилятор вставляющий проверки. Академия уже тогда предлагала автоматические способы оптимизировать и выкинуть часть проверок, чтобы тем не менее не допускать выхода за границы. Но поцреархи запиливают C, в котором нет массивов, и даже не задумываются о проверках. Как так?

Мне всегда это было непонятно, но теперь стало немного понятнее. Академия не могла предложить им объяснения почему это реально важно. Если бы академия тогда придумала бы червь Морриса и показала бы им, то они бы наверное задумались бы. Или если бы им показали бы эксплоит к этой уязвимости в su. Но они существовали в узком кругу людей, допущенных к компьютерам, которым в голову не приходило целенаправленно ломать поведение программ. Потом, когда компьютеры распространились шыре, и до клавиатур стали допускать случайных людей, вдруг появились черви и эксплоиты. Но до этого, они жили в мире где переполнения буферов действительно неважны. Они могли всё поломать, но при каком-то очень специальном и маловероятном стечении обстоятельств.

> А в реальности-то, оказывается, дичь была еще похлеще, чем современное "тяп-ляп - и в продакшн".

Угу. Но они б не создали Unix, если бы попытались бы дотянутся до уровня хотя бы современного "тяп-ляп и в продакшн". Сегодя, например, имея опыт раста, можно на C писать довольно надёжный код, просто потому что раст приучает к соблюдению довольно простых правил, которые снимают ряд проблем. Но в чтобы в 70-х допереть до этих правил надо было быть я не знаю кем.

Потребовалось 20 лет с тех пор, чтобы создать Ada, и ещё 20 лет, чтобы создать Rust. У поцреархов шансов не было взять и придумать всё это на ровном месте. Они могли бы попытаться изобрести что-то, набивая себе шишки, и пробуя разные подходы, но насколько бы они были бы быстрее индустрии, которой потребовалось 40 лет набивания шишек, чтобы дотумкать до раста?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45

153. Сообщение от Аноним (-), 09-Янв-26, 16:13   +/
> проблема только в том что они - в хрусте.

Да, это проблема.
Можно решить выкидыванием дырявых ЯП.

> ты и на си тоже вполне можешь заранее посчитать значение и сохранить отдельно.

Желательно прикостылять где-то сбоку.
А потом забыть обносить и получить рассинхрон выделенного буфера и реального размер строки.
Отличный план нax. надежный как СИшная дpucтня!

> Почему-то так почти никто не хочет делать.

СИшникам плевать на качество*?
* начиная с UNIXv4

> Причина банальна - в процессоре нет никаких строк. И в памяти их нет. Есть только последовательности байт.

Ого! Ты умеешь читать педивикию!

> сахарок приходится отложить в сторонку и заново учиться работать с сырыми данными из недоверенного источника.

Вот только "сырые данные из недоверенного источника" могут читаться один раз.
А потом еще обрабатывается в 10 функциях, в каждой СИшник может налажать.
И лажает.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #90

154. Сообщение от Аноним83 (?), 09-Янв-26, 16:25   –3 +/
gets() внутри как раз и соедржит примерно это.
Долгое время данное не было проблемой ПО/владельца системы а было проблемой юзера который делает что то не то.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #147

156. Сообщение от нах.. (?), 09-Янв-26, 16:29   +/
Implement the bare minimum as native code (a mix of assembly and C), and then do everything else in Squeak.

что-то видимо пошло не так, и без распроклятого нибизопастного си опять не получилось.
(но попытка конечно зачотная)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #133 Ответы: #346

158. Сообщение от нах.. (?), 09-Янв-26, 16:31   +/
нет, точно такой же ляп (только там символы удалялись а не добавлялись), просто та su еще и backspace не умела обрабатывать, ей было проще. Если ты бы умел кодить не на markdown и тот с ЫЫ - ты бы это и сам понял.


Если в следующей инкарнации я соберусь соорудить альтернативу опеннету, то ношение шапочек из фольги все же будет там приводить к перманентному бану.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #106

159. Сообщение от Аноним83 (?), 09-Янв-26, 16:31   +/
А зачем нужны строки?

Так по хорошему в С есть строки, это то что const char * = "stroka";
Всё остальное это какие то байты хранящиеся где то в памяти, про которые известно программисту но не компелятору.

А когда программе надо много работать со "строками" - тогда и юзают всякие или самописные или готовые фреймворки для строк, где длина хранится где то рядом.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #150 Ответы: #216

160. Сообщение от Аноним (160), 09-Янв-26, 16:32   +/
Электроника БК-0010 же!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37 Ответы: #179

161. Сообщение от Аноним (418), 09-Янв-26, 16:37   +/
> Позднее код UNIXv4 был приведён в порядок и опубликован на GitHub

По ссылке Equilateral-AI с соавтором Claude Opus 4.5 свалил вместе V4, V5 и V6 без пояснений, что где. И сгенерировал readme с советом переписать на расте.

Option B: Modern Reimplementation
- Implement in modern C/Rust

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #171

162. Сообщение от нах.. (?), 09-Янв-26, 16:39   +/
ну на самом деле его там не было потому что размеры на pdp11 и так все знали, зачем считать то что заранее известно.
А появился при переносе на interdata (и это скорее v6) когда внезапно оказалось что на другой архитектуре в int не два char а целых четыре и это надо как-то уметь проверять, если данные читаются или пишутся посимвольно из внешнего источника.

А byte не появился, ненавижю.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #127 Ответы: #236, #289

163. Сообщение от Аноним (163), 09-Янв-26, 16:40   +1 +/
Да программируйте хоть на Оббероне, никто вам не запрещает. У сишников свой путь, у begin/end'щиков свой.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #134

165. Сообщение от Аноним (163), 09-Янв-26, 16:45   +1 +/
А котам туда нельзя. Сюда нельзя.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

166. Сообщение от пэпэ (?), 09-Янв-26, 16:46   +8 +/
Вот и дожили, когда у молодняка на уме только квартиры. Про пещеры совсем забыли. Потерянное поколение.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #129

167. Сообщение от Аноним (163), 09-Янв-26, 16:49   +1 +/
>Что ты несешь? Unix - коммерческая ОСь.

Как бы, с версии 7 стала таковой. А до этого была, кроме самой Bell, учебной для университетов.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #99

169. Сообщение от нах.. (?), 09-Янв-26, 16:50   +2 +/
> Тебя попросят накидать на баше скрипт конвертации gif в avi - тоже
> будешь обкладывать его проверками со всех сторон; делать поиск подходящего набора

вот фу таким быть. Во-первых надо было конечно первым делом проверить что гиф это гиф (хотя бы через magic), а то вдруг это jpeg и он исполнит какой-нибудь вредоносный код!
Во-вторых надо отправить сэмплы куда-нибудь в облако - вдруг gif но не совсем.
Заодно и само изображение сохранить в бездонной бигдейте, вдруг там cp!

Потом... потом надо вывести ошибка ашипка и повиснуть. Предварительно удалив файл потому что из-за пропущенной команды управление передалось в ветку которая вообще не должна была работать в этой версии.

Вот что я называю современным программированием, а не это вот ваше тяп-ляп!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #123

171. Сообщение от nox. (?), 09-Янв-26, 16:52   +/
Мы вообще-то исторический артефакт обсуждаем. А не проблему, как к "Джоконде" пририсовать бульдозер.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #161 Ответы: #188

174. Сообщение от Аноним (174), 09-Янв-26, 17:04   +1 +/
> Опять же, откуда ты узнаешь, сколько байт ввели? Это надо счётчик для каждого символа, дополнительные проверки.

Ты в код заглядывал?
там while((*q = getchar()) != '\n')
Они и так считывали ввод посимвольно.

> А вот каким образом в grub проверку пароля можно обойти нажав backspace несколько раз -- это другой вопрос.

Это очень веселая и показательная история
opennet.ru/opennews/art.shtml?num=43536

> Это уже умысел.

Не докажете)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #106

175. Сообщение от Аноним (175), 09-Янв-26, 17:09   –2 +/
1 rust CVE на 500 Си CVE в ядре в среднем. Ближайшие годы Сишники пальму не отдадут, даже если количество кода на rust перевалит за половину.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #111 Ответы: #181, #182, #225

176. Сообщение от Аноним (174), 09-Янв-26, 17:12   –2 +/
> Тебя попросят накидать на баше скрипт конвертации gif в avi - тоже будешь обкладывать его проверками со всех сторон ?

Нет! Проверки не нужны!
Всегда приятно сделать чашечку крепкого кофе и почитать новости.

Критическая 0-day уязвимость в Chrome и libwebp, эксплуатируемая через изображения WebP
opennet.ru/opennews/art.shtml?num=59746
критическая уязвимость вызвана переполнением буфера в обработчике формата изображений
... в сети выявлен рабочий эксплоит, который уже применяется злоумышленниками для совершения атак (0-day).

Уязвимость во FreeType, эксплуатируемая через TTF-шрифт и затрагивающая браузеры
opennet.ru/opennews/art.shtml?num=53922
... уязвимость уже активно эксплуатируется злоумышленниками (0-day). Проблема вызвана переполнением буфера в функции Load_SBit_Png, возникающим при обработке глифов с битовыми картами большого размера (указание в заголовке ширины или высоты больше 65535).

Уязвимость во FreeType, позволяющая выполнить код при обработке шрифтов
opennet.ru/opennews/art.shtml?num=62875
Уязвимость вызвана переполнением буфера, возникающем при разборе субглифовых структур

Прям как диды в этой новости завещали!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #123

177. Сообщение от Аноним (418), 09-Янв-26, 17:15   –1 +/
> Такой вот способ обработки ошибок был в то время, чтобы не городить лишний огород - процессор то слабее, чем в современной стиральной машине, и памяти, считай, нет

Трёхмерные крестики-нолики* (в дополнение к двухмерным), шахматы, блэкджек, генератор лабиринтов, какая-то игра-угадайка из Англии, игра "Hunt the Wumpus"... юниксовая размашистость в файловой системе, без 8.3 из CP/M и прочего. Как на это хватило памяти и процессора в 1972-1973 на дорогущем казённом компьютере? И почему история юникса всегда шла рядом с HDD на сотни дискеток объёмом?

* http://squoze.net/UNIX/v4man/man6/cubic и т.д.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #124 Ответы: #184, #254

179. Сообщение от Аноним (6), 09-Янв-26, 17:17   +4 +/
Это pdp-11 курильщика  
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #160 Ответы: #185

180. Сообщение от Аноним (32), 09-Янв-26, 17:20   –1 +/
Это домыслы и натягивание совы
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #70

181. Сообщение от Аноним (348), 09-Янв-26, 17:21   –1 +/
Только большинство CVE в C - это какая-нибудь утечка памяти, которую еще придется потрудиться реализовать, когда как в Rust бэкдор можно просто напрямую в код встраивать все равно никто не разберется.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #175 Ответы: #279

182. Сообщение от Аноним (6), 09-Янв-26, 17:21   +2 +/
При этом кода на Си в миллион раз больше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #175

184. Сообщение от Аноним (184), 09-Янв-26, 17:23   +/
Воу-воу!
Ты только трехмерные крестики-нолики не трож!
Это все нужно для работы.
А проверка длинного пароля роняющая утилиту, это совершенно избыточное и ненужное!!

> http://squoze.net/UNIX/v4man/man6/cubic и т.д.

спасибо за ссылку))


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #177 Ответы: #194

185. Сообщение от Аноним (-), 09-Янв-26, 17:24   +1 +/
> Это pdp-11 курильщика  

Ой! Не придирайтесь!
Как смогли - так и сп###ли.
Скажите спасибо что хоть это было))

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #179

186. Сообщение от Аноним (6), 09-Янв-26, 17:24   +/
Но ведь вся суть существования местных комментаторов никогда не выходить заграницу буфера. Это заповедь, которую нельзя нарушать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #74

188. Сообщение от Аноним (418), 09-Янв-26, 17:25   +/
Я об этом и говорю, можно оставить ссылку на http://squoze.net/UNIX/v4/README, а нейрослоп удалить.

Ещё из той репы: https://github.com/Equilateral-AI/UnixV4-Resurrection/tree/m...
Нейронка считает, что в пустом каталоге у неё лежит ядро MicroUnix для виртуальной машины Rust VMM, которая состоит из println!("Hello, world!")*. И что это имеет отношение к истории Unix.

* https://github.com/rust-vmm/rust-vmm/blob/main/rust-vmm/src/...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #171 Ответы: #203

194. Сообщение от Аноним (6), 09-Янв-26, 17:30   +/
Что характерно в казенном большом компе на несколько машинных залов в файловой системе судя по эмуляторам была папка games
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #184

198. Сообщение от Аноним (146), 09-Янв-26, 17:36   +/
Какая перегрузка операторов? Зачем?
Структура { длина, указатель } - это совершенно _другой_ тип данных. Для него пишутся другие функции по определению, стандартные все равно не годятся. Вот Игорь Сысоев не поленился и написал для nginx:

https://github.com/nginx/nginx/blob/master/src/core/ngx_stri...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #144 Ответы: #211

203. Сообщение от Аноним (418), 09-Янв-26, 17:45   +/
> Rust VMM, которая состоит из println

Ладно, это моя ошибка. Но в ссылке из статьи странности продолжаются.
> Current Status
> Terminal UI: Complete - Retro CRT-style terminal with green phosphor aesthetics
> PDP-11 Emulator: Not yet integrated
> Unix V5 Boot: Pending emulator integration
> https://github.com/Equilateral-AI/UnixV4-Resurrection/tree/m...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #188

210. Сообщение от Аноним (210), 09-Янв-26, 18:02   –2 +/
В совке и такого не было.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #307

211. Сообщение от Аноним (418), 09-Янв-26, 18:02   +/
> Структура { длина, указатель } - это совершенно _другой_ тип данных. Для него пишутся другие функции по определению

Верно, в Си ещё с обобщённым программированием проблемы. Только на макросах, а их даже ты тут не рассматриваешь.

> стандартные все равно не годятся

И со стандартной библиотекой, да.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #198 Ответы: #223

213. Сообщение от Аноним (213), 09-Янв-26, 18:15   +/
В паскале есть указатели, а это значит, что паскалисты - латентные сишники, портящие память.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #134 Ответы: #252, #318

215. Сообщение от Аноним (216), 09-Янв-26, 18:27   +/
> Не надо путать причину и следствие. Пока не появился червь морриса никто не задумывался об уязвимости

Ты с логикой дружишь? Наличие дыр в коле (причина) привела к появлению червя (следствие).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #100

216. Сообщение от Аноним (216), 09-Янв-26, 18:41   +/
> А зачем нужны строки?
> Так по хорошему в С есть строки, это то что const char * = "stroka";

Ну, например, чтобы не бежать каждый раз O(n) в поисках нуля? Причем заметь: компилятор-то уже знает длину строкового литерала, но гениальный дизигн "на коленке" в 99% случаев это не позволяет использовать.

Ну, или, не сношаться с буферами фиксированного размера в случае, как вот с этим дырявым дидовским su. Уже больше полувека целый пласт вулнов льется бесконечным потоком лишь потому, что в Си отсутствует человеческий строковый тип. Причем первопроходцами в этом стали сами деды-создатели! 😂

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #159 Ответы: #250, #351

217. Сообщение от Bottle (?), 09-Янв-26, 18:42   +1 +/
Наконец-то фанаты философии UNIX смогут пользоваться настоящим Юниксом, написанным академиками!
Ответить | Правка | Наверх | Cообщить модератору

221. Сообщение от OpenEcho (?), 09-Янв-26, 19:08   +1 +/
> Они переписывали на печатной машинке (телетайпе) и у них не было кнопки backspace

Всё то лучше чем смотреть на таблицу опкодов и вбивать хексом (а то и 1,0...) чтоб сделать сперва ассемблер, потом С и так далее, чтоб потом от потомков огрести какие все тупые были.
То ли дело у них, в их абстрактой клетке всё за них "нормальные" языки делают... и правильно делают! C таким менталитетом к прошлому их близко нельзя подпускать к более низкому уровню, зато какая блин гордость за "удобно" читаемый и "понятный" код на "нормальном языке", потому как mогут даже так:

```
    let x: () = ()=()=();

```

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #224

222. Сообщение от Аноним (222), 09-Янв-26, 19:12   –1 +/
> Си был исконно с первейших версий придуман чтобы

Можно было бы ещё раз объяснить тебе, для чего был придуман Си, но тебе уже объясняли, а ты так и не понял.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

223. Сообщение от Аноним (146), 09-Янв-26, 19:13   +/
А смысл их тут рассматривать? Только если сделать комбо, когда строки нуль-терминированные, но ещё с собой таскается длина для оптимизации. Тогда ещё можно что-то разумное придумать.

Полноценное обобщенное программирование - это не для продвинутого макроассемблера, слишком далеко от железа, для этого есть более другие языки.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #211 Ответы: #382

224. Сообщение от Аноним (224), 09-Янв-26, 19:18   –1 +/
> Всё то лучше чем смотреть на таблицу опкодов и вбивать хексом (а то и 1,0...) чтоб сделать сперва ассемблер, потом С и так далее,

Конечно лучше

> чтоб потом от потомков огрести какие все тупые были.

Разве их кто-то называл тупыми?
Они как раз были умными: знали что пишут погано, но все равно делали.

> C таким менталитетом к прошлому

Типа "нельзя критиковать Великих Программистов Прошлого!!!" ?
Даже если они писали однозначно плохой код, про который высказывался Дуглас Макилрой, цитаты которого уже пол темы мусолят.

> mогут даже так:
>     let x: () = ()=()=();

Отличный код! Они явно вдохновлялись ++i == i++


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #221 Ответы: #310, #312

225. Сообщение от Аноним (213), 09-Янв-26, 19:28   –1 +/
Проблема в том, что cve на rust одна единственная, и повод для целой новости, а 500 cve на дыряшке обыденность, и никого не удивляет, что 500 приходится на один раз. Будут следующие 500, об этом опять же никто как о целой новости не напишет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #175

226. Сообщение от Аноним (277), 09-Янв-26, 19:28   +/
И, ЧСХ, тут в комментариях к новости о очередной сишной дырени уровня "вылезли за буфер" почти всегда находится тот, кто на полном серьезе говорит "это закладка!".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68

227. Сообщение от 1 (??), 09-Янв-26, 19:30   +2 +/
В 73 году там скорее всего только консоль была. А десктоп с обоями.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #151 Ответы: #228, #360

228. Сообщение от 1 (??), 09-Янв-26, 19:31   +1 +/
а не десктоп
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #227

230. Сообщение от Аноним (213), 09-Янв-26, 19:41   +2 +/
>Данная утилита включала менее 50 строк кода, устанавливалась с флагом setuid-root и позволяла запустить /bin/sh с правами root при вводе правильного пароля. Код содержал уязвимость, приводящую к переполнению буфера из-за копирования вводимого пользователем пароля в фиксированный 100-символьный массив без проверки размера вводимых данных.

Это просто гимн качеству кода на си. Упаковать уязвимость в 50 строк кода - это надо уметь.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #295, #297

232. Сообщение от Аноним (277), 09-Янв-26, 19:48   +1 +/
> Оперативная память
> Без особой необходимости - слишком расточительно.

Ага, и поэтому мы выделим 200 байт стека на пароль.

> Каждая лишняя проверка на счету

И поэтому мы будем дергать getc() в цикле.

Как же смешон копиум местных экспертов. Хотя, казалось бы, вот же код и даже цитаты Дугласа Макилроя под носом...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #149 Ответы: #349

233. Сообщение от Roman Dyabaemail (ok), 09-Янв-26, 19:50   +/
Только один даже этот перл кода, побуждает сходить за пивом:

/* To convert to msec, must divide a 64b quantity by 10000.  This is actually done
   by dividing the 96b quantity 0'time by 10000, producing 64b of quotient, the
   high 32b of which are discarded.  This can probably be done by a clever multiply...
*/

quo = htod = 0;
for (i = 0; i < 64; i++) {                              /* 64b quo */
    htod = (htod << 1) | ((tod[1] >> 31) & 1);          /* shift divd */
    tod[1] = (tod[1] << 1) | ((tod[0] >> 31) & 1);
    tod[0] = tod[0] << 1;
    quo = quo << 1;                                     /* shift quo */
    if (htod >= 10000) {                                /* divd work? */
        htod = htod - 10000;                            /* subtract */
        quo = quo | 1;                                  /* set quo bit */
        }
    }
return quo;
}

void sim_os_sleep (unsigned int sec)
{
sleep (sec);
return;
}

Явно студенты со здоровым чувством юмора были !

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #267, #281, #354, #471

234. Сообщение от Аноним (213), 09-Янв-26, 19:50   +1 +/
>У вас ограничение на длину вводимой строки. Всё, что больше, считается критической ошибкой, поэтому падение программы в данном случае - нормальное поведение.

Проффесор, а читать не умеете. Нет никакого падения, есть переполнение буфера. И при вводе специальных данных, можно переписать память, выполнив произвольный код.
>Такой вот способ обработки ошибок был в то время, чтобы не городить лишний огород - процессор то слабее, чем в современной стиральной машине

И что? Если бы в код добавили проверку на выход из буфера, то что, программа бы сломалась?
>и памяти, считай, нет (если сравнивать с сегодняшним днём)

А что, сишники сейчас пользуются памятью? По прежнему экономят каждый байт, так что программы портят память в тех же самых местах.
>Впрочем, вам ведь всё равно, про таких говорят: хоть кол на голове теши.

Сишники г-кодеры не потому, что пишут дырявый код. Сишники г-кодеры потому, что хотят писать дырявый код. И если у них появится возможность перестать писать г-код, то они её с радостью отвергнутю
>Падение уровня образования - одно из проявлений.

Мы обсуждаем дидовый г-код, а не современный. Современные инструменты позволяют избегать таких проблем автоматически.
>что современная система образования (любая) думать не учит совершенно

Интересно, а почему это современные инструменты, позволяющие избегать таких проблем априори, появились сейчас, а не в то время, когда по вашему утверждению был более высокий уровень образования? Наоброт, в отличии от тех тёмных времён, сейчас есть интернет, а не просто местная библиотека.
>Только вот беда - иногда зарплату платить приходится, иначе разбегаться начинают.

Зато при коммунизме зарплату можно не платить, а чтобы не разбегались, закрыть границы. Платить 99% по минимальному прожиточному минимум, и хватит с них.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #124 Ответы: #241, #488

235. Сообщение от Аноним (213), 09-Янв-26, 19:53   +/
>Если данные не корректны - то пофиг что оно крашится, юзер ССЗБ.

Опять сишники лгут. Оно не крашится, оно предоставляет уязвимость.
>то итоговая производительность запросто может рухнуть более чем в 2х, что тогда было не приемлемо

Пароль будет проверятся в два раза дольше - это так плохо. Давайте лучше сделаем уязвимость. И да, в то время производительность росла астрономическими темпами, пожертвуй даже десятикратно производительностью, и спустя несколько лет этого никто не заметит.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75

236. Сообщение от Аноним (146), 09-Янв-26, 19:56   +1 +/
держи:

typedef unsigned char byte;

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #162 Ответы: #450

237. Сообщение от Аноним (213), 09-Янв-26, 19:56   +/
>Притом 100% известно что лишние проверки тормозят выполенение программы от 5% до 80%

Ага, ожидание ввода пароля, где скорость ограничена пальцами пользователя. Апологеты сишки не перестают врать.
>А теперь ответь на вопрос честно: ты бы предпочёл смотреть видосики с ютуба и играть в игры или сидеть без всего этого в безопасности?

Знаете, если проприетарщики не слишком мешают, можно реализовать флеш плеер самостоятельно, но на этот раз правильно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #104 Ответы: #352

238. Сообщение от Аноним (213), 09-Янв-26, 19:57   +3 +/
>в те времена производительность меряли не гигагерцами, а герцами

Мегагерцами, а не герцами, врать не надо.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #117 Ответы: #323

239. Сообщение от Аноним (277), 09-Янв-26, 19:57   +1 +/
> Идея была в том, что прогу писали для выполнения конкретной функции. Подразумевалось что на входе для получения нужного результата подают корректные входные данные.

То есть пароль в 200 символов - корректные данные, а 201 - уже нет?

> писалось оно часто для себя и своего окружения, никаких какеров там не было - тупо ломать самого себя. Поэтому скрашилось - ну значит фигню вёл, попробуй ещё раз.

Хм, а Дуглас Макилрой говорит:

"We did gradually learn that automatically
generated input lines--particularly lines of code--could be much longer than any person would write, so buffer overflows that actually happened gradually got fixed."

То есть получилось "скрашилось - ну значит фигню в коде написал, попробуй написать снова по-человечески".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75

241. Сообщение от ProfessorNavigator (ok), 09-Янв-26, 19:59   –2 +/
>[оверквотинг удален]
> Мы обсуждаем дидовый г-код, а не современный. Современные инструменты позволяют избегать
> таких проблем автоматически.
>>что современная система образования (любая) думать не учит совершенно
> Интересно, а почему это современные инструменты, позволяющие избегать таких проблем априори,
> появились сейчас, а не в то время, когда по вашему утверждению
> был более высокий уровень образования? Наоброт, в отличии от тех тёмных
> времён, сейчас есть интернет, а не просто местная библиотека.
>>Только вот беда - иногда зарплату платить приходится, иначе разбегаться начинают.
> Зато при коммунизме зарплату можно не платить, а чтобы не разбегались, закрыть
> границы. Платить 99% по минимальному прожиточному минимум, и хватит с них.

Код, написанный лично вами, покажите, потом продолжим.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #234 Ответы: #245

242. Сообщение от Аноним (242), 09-Янв-26, 20:06   +/
> CVE в Binder привело к падению.

Память не была испорчена, повышение привилегий или исполнение чужого кода не произошло.

Да, подумаешь, произошёл DoS всей системы, с кем не бывает. Всего-то навсего обошли систему упреждения race-condition (если она вообще существует) в safe коде. А, да, точно, "виновата" строчка unsafe где буквально происходит обычное удаление элемента из списка, а не та safe часть кода, которая отпустила лок на лист, продолжая работать с данными из него, пусть даже сделав локальную копию (нахера?).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #334, #481

245. Сообщение от Аноним (213), 09-Янв-26, 20:07   +/
Вы уже в соседней теме видели мой код, забыли?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #241 Ответы: #248

248. Сообщение от ProfessorNavigator (ok), 09-Янв-26, 20:14   –2 +/
> Вы уже в соседней теме видели мой код, забыли?

Он не ваш, а из методички. Когда свой проект напишите, или в чужой вклад вносить начнёте - приходите. В общем - свободен.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #245 Ответы: #263

250. Сообщение от Аноним (242), 09-Янв-26, 20:18   –3 +/
Если у тебя проблемы с тем, чтобы писать код, в котором нету перепрыгивания через '\0', то у тебя такие же проблемы будут с любыми другими делениями по токенам типа разночтения окончания строк (CRLF vs. LF), пробелов, тегов в XML и т.д.. Иди поспи. Если не помогло - брось это дело, у тебя не получается. Можешь на баше попрограммировать, там за тебя уже позаботились о пресловутом поиске нуля в конце строки (который ищется быстрее, чем какой-нибудь питон свои строки переаллоцирует 10 тысяч раз и перепроверит на правильность кодировки, так, чисто на всякий случай, всё равно ты никуда не торопишься).
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #216 Ответы: #257, #273

252. Сообщение от анондирован (?), 09-Янв-26, 20:20   +1 +/
Pascal относится к memory safe языкам (как и Delphi, Ada и тд)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #213 Ответы: #258, #277

253. Сообщение от Аноним (277), 09-Янв-26, 20:25   +/
> Таких "нормальных строк" в С в разных либах/фреймворках вагон и маленькая тележка, просто их никто в стандарт не тащит, потому что это лишнее.

Зато не лишнее - посношаться с фиксированным буфером и вылезти за его пределы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78

254. Сообщение от ProfessorNavigator (ok), 09-Янв-26, 20:27   –1 +/
Умели код оптимизировать. На моём первом ПК был жёсткий диск размером 40 Мб, сколько там по остальным параметрам было - не помню уже. Дело было больше 30 лет назад.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #177

256. Сообщение от Аноним (242), 09-Янв-26, 20:28   +/
> Продемонстрировано несколько способов обхода изоляции FreeBSD jail

Ты пользуешься джейлами для того чтобы запускать юзверей под рутом? Если да, то тут для тебя в линуксе есть крутая вещь - capabilities процесса. Можешь спавнить сколько угодно http-серверов с портом 80 и 443, даже root не нужен, представляешь?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #63

257. Сообщение от Аноним (277), 09-Янв-26, 20:32   +/
> Если у тебя проблемы с тем, чтобы писать код, в котором нету перепрыгивания через '\0'

С этим проблемы есть у всех сишников уже более полувека. Начиная, вон, с дидов-основателей.

А у тебя нет, я правильно понял твой намек? Ты тот самый "настоящий сишник"? 🤣

> Можешь на баше попрограммировать
> какой-нибудь питон

Вот это тебя понесло! Баш, Питон... Иди поспи, что ли.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #250

258. Сообщение от Аноним (213), 09-Янв-26, 20:32   –1 +/
Не нужно придумывать. https://wiki.freepascal.org/Memory_Management#Use-After-Free
>Use-After-Free on the other hand can result in unpredicted behavior, and may even result in exploitable vulnerabilities through which an attacker could trick your program into executing malicious code, or circumventing other security mechanisms such as access control.

Для memory safe нужно либо отказаться от указателей, либо иметь крайне продвинутую систему типов.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #252 Ответы: #278

259. Сообщение от Аноним (242), 09-Янв-26, 20:34   +/
О, чела который думает, что убирание логина в root по ssh и оставления дырки обратно в виле sudo делает систему безопаснее, порвало. Вытащи наружу su через 'ncat -k -e su', мы тебя попинтестим всем опеннетом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #93

263. Сообщение от Аноним (213), 09-Янв-26, 20:40   +/
>Он не ваш, а из методички.

Ну так вы любой код не моим назовёте, даже если я его при вас напишу. Скажете, что зазубрил на память.
>или в чужой вклад вносить начнёте - приходите

А кто вам ошибку в вашем парсере указал, а?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #248 Ответы: #264

264. Сообщение от ProfessorNavigator (ok), 09-Янв-26, 20:41   +/
> Ну так вы любой код не моим назовёте, даже если я его
> при вас напишу. Скажете, что зазубрил на память.
>>или в чужой вклад вносить начнёте - приходите
> А кто вам ошибку в вашем парсере указал, а?

Свободен.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #263

265. Сообщение от Аноним (278), 09-Янв-26, 20:43   +1 +/
Я не понял, а лицензия то какая на этот код? AT&T разрешение дало на публикацию? Так-то ведь он проприетарный.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #270, #359, #364

267. Сообщение от Anm (?), 09-Янв-26, 20:46   +/
Пионеры IT )
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #233

269. Сообщение от Аноним (278), 09-Янв-26, 20:47   +1 +/
Оператор ++ был взят из Algol-68
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

270. Сообщение от Anm (?), 09-Янв-26, 20:49   +/
" Unix в Bell Labs "


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #265 Ответы: #358

271. Сообщение от Аноним (277), 09-Янв-26, 20:50   +/
> У вас ограничение на длину вводимой строки. Всё, что больше, считается критической ошибкой, поэтому падение программы в данном случае - нормальное поведение

Ага, за исключением тех случаев, когда пределы буфера не приводит к падению. Или (как это su) оставляет тебя с вырубленным режимим TTY echo. Нормальное поведение, да.

> Такой вот способ обработки ошибок был в то время, чтобы не городить лишний огород - процессор то слабее, чем в современной стиральной машине

И поэтому мы дергаем getc() в цикле.

> и памяти, считай, нет

И поэтому мы наперед откусим 100 байт стека.

> Впрочем, вам ведь всё равно, про таких говорят: хоть кол на голове теши. И к программированию вы никакого отношения не имеете

О, превентивный ad hominem от профессора. 😂

>> Или Кену Томпсону тоже капитализм подгадил?
> Он гадит вообще всем, даже тем, кто так не считает. Падение уровня образования - одно из проявлений

Намекаете, что Кен Томпсона был тот самый "упавший" уровень образования?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #124 Ответы: #272, #384

272. Сообщение от ProfessorNavigator (ok), 09-Янв-26, 20:52   –1 +/
>[оверквотинг удален]
> Нормальное поведение, да.
>> Такой вот способ обработки ошибок был в то время, чтобы не городить лишний огород - процессор то слабее, чем в современной стиральной машине
> И поэтому мы дергаем getc() в цикле.
>> и памяти, считай, нет
> И поэтому мы наперед откусим 100 байт стека.
>> Впрочем, вам ведь всё равно, про таких говорят: хоть кол на голове теши. И к программированию вы никакого отношения не имеете
> О, превентивный ad hominem от профессора. 😂
>>> Или Кену Томпсону тоже капитализм подгадил?
>> Он гадит вообще всем, даже тем, кто так не считает. Падение уровня образования - одно из проявлений
> Намекаете, что Кен Томпсона был тот самый "упавший" уровень образования?

Код, написанный лично вами, или свободен.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #271 Ответы: #287

273. Сообщение от Аноним (213), 09-Янв-26, 20:55   +/
>Если у тебя проблемы с тем, чтобы писать код, в котором нету перепрыгивания через '\0'

Это сишные проблемы.
>такие же проблемы будут с любыми другими делениями по токенам типа разночтения окончания строк (CRLF vs. LF)

Разные окончания строк не приводят к переполнению буфера.
>пробелов, тегов в XML

Нормальные люди давным давно используют библиотеки, а не пишут обработку с нуля, словно на дворе семидесятые
>Можешь на баше попрограммировать, там за тебя уже позаботились о пресловутом поиске нуля в конце строки (который ищется быстрее, чем какой-нибудь питон свои строки переаллоцирует 10 тысяч раз и перепроверит на правильность кодировки, так, чисто на всякий случай, всё равно ты никуда не торопишься

Есть куча языков: rust, ocaml, go, но сишники продолжают страдать дихтомией - либо си, либо баш/питон.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #250

274. Сообщение от Аноним (278), 09-Янв-26, 20:55   –4 +/
Pascal сформировался в своём классическом виде только в 1974-м году, и он был предназначен для программирования in small.
Программа на Pascal должна находиться только в одном файле исходного текста, о каком серьёзном применении Паскаля может идти речь?
(TurboPascal, Delphi, FreePascal, GnuPascal, IsoPascal, MacPascal - это не Pascal, это другие языки)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #134 Ответы: #282, #321, #339

275. Сообщение от Аноним (213), 09-Янв-26, 20:59   +1 +/
>Нынешнему поколению плевать даже на сам Си не то, чтобы на баги Сишные, даже не с точки зрения безопасности, а вообще корректности того или иного алгоритма.

То-то же современные программисты пишут либо на rust, либо на ocmal, либо на haskell, где ошибочная программа, в отлчии от си компилироваться не будет. А ведь есть ещё Lean и Idris.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #118 Ответы: #329, #353

277. Сообщение от Аноним (277), 09-Янв-26, 21:03   –2 +/
> Pascal относится к memory safe языкам

Не относится, потому что память в нем ты ручками вычищаешь. Даже C++ к ним не относится, а в нем, на минуточку, в отличие от Паскаля/Delphi есть RAII.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #252 Ответы: #284, #316

278. Сообщение от Аноним (278), 09-Янв-26, 21:05   +3 +/
Так у Free Pascal'я система типов как раз продвинутая: есть
- небезопасные указатели для обраб. данных на низком уровне ( ^T );
- безопасные указатели ( T, T- это класс);
- управляемые указатели ( которые на тип-интерфейс), они как smart pointer;
- динамические массивы и строки - у них память освобождается автоматически.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #258 Ответы: #333

279. Сообщение от Аноним (175), 09-Янв-26, 21:05   –1 +/
Причем память у Си утечет вместе с рутом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #181

280. Сообщение от Аноним (213), 09-Янв-26, 21:05   +/
>Это надо счётчик для каждого символа

Одна строка - один счётчик.
>дополнительные проверки

И? В чём проблема проверять ввод, как минимум, когда медленные пальци программиста вводят пароль? Вы боитесь неуспеть реализовать cve?
>А вот каким образом в grub проверку пароля можно обойти нажав backspace несколько раз -- это другой вопрос. Это уже умысел.

Точно таким же. Как и в 1970-ые.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #106 Ответы: #304

281. Сообщение от nox. (?), 09-Янв-26, 21:08   +1 +/
Стиль убогий. Но где вы хороший стиль программирования на С видели? Разве что в документации Borland и в тех проектах, авторы которых восприняли эту эстетику.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #233

282. Сообщение от Аноним (277), 09-Янв-26, 21:09   +2 +/
> Программа на Pascal должна находиться только в одном файле исходного текста, о каком серьёзном применении Паскаля может идти речь?

Покажи мне хоть одну программу из исходного кода Unix 4 (ссылка в новости), которая состояла бы из более чем одного файла исходного текста. То-то же...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #274 Ответы: #286

283. Сообщение от RM (ok), 09-Янв-26, 21:09   +/
там интересно, что getchar возвращает 0 а не EOF если конец ввода или ошибка.
в man того времени это даже задокументировали как BUG.
и с типами возвращамых значений не парились.
вообщем дидам было тяжело, а прогресс виден.
Ответить | Правка | Наверх | Cообщить модератору

284. Сообщение от Аноним (278), 09-Янв-26, 21:13   +1 +/
https://wiki.freepascal.org/smartpointers
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #277 Ответы: #335

285. Сообщение от Лиечка (?), 09-Янв-26, 21:14   +2 +/
+ за Вавилон-5. В условиях ограниченных ресурсов (каждый байт за счету) такое отношение к переполнениям буфера имело место быть... но в современных условиях такое уже недопустимо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #454

286. Сообщение от Аноним (278), 09-Янв-26, 21:15   +1 +/
Ядро
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #282

287. Сообщение от Аноним (277), 09-Янв-26, 21:16   +/
> Код, написанный лично вами

А при чем тут код, написанный лично мной? Как он относится к теме обсуждения?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #272

289. Сообщение от Аноним (277), 09-Янв-26, 21:24   +/
> ну на самом деле его там не было

На самом деле он там есть:

https://github.com/search?q=repo%3AEquilateral-AI%...

> его там не было потому что размеры на pdp11 и так все знали, зачем считать то что заранее известно.

Очередной опеннетный эксперт сочиняет чушь о том, как оно там в семидесятых было "на самом деле". 🤦

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #162

290. Сообщение от Аноним (277), 09-Янв-26, 21:26   +/
> скорее всего тогда ещё не было sizeof(), пишут, что он появился во времена Unix V5 и V6, примерно тогда, когда и структуры

Писаки врут, ибо sizeof в исходниках есть:

https://github.com/search?q=repo%3AEquilateral-AI%...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #127

293. Сообщение от Джон Титор (ok), 09-Янв-26, 21:36    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору

294. Сообщение от Аноним (294), 09-Янв-26, 21:39   +/
ага, а потом пытаешься совместить эти либы в одном проекте
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #78 Ответы: #369

295. Сообщение от Джон Титор (ok), 09-Янв-26, 21:39   –1 +/
Ну хорош умничать с линтерами, статическими анализаторами, форматерами. Раньше этого не было
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #230 Ответы: #350

297. Сообщение от Джон Титор (ok), 09-Янв-26, 21:48   +/
Для того чтобы создать rust вы почитайте количество технологий которые нужно было создать для этого. А ещё должен быть накопленный опыт чтобы вообще теоретически его создать. Кто-то должен этот опыт систематизировать и обдумать в новый язык программирования. А ещё сюда добавьте рекламу и финансовые вливания в проекты на нем. Вот тот же haskell чем-то на него похож, он был создан ранее, но почему-то не пользовался популярностью. Есть допустим такие языки как Пролог, Лисп которые имеют совсем иной подход к программированию. На них тоже много чего интересного и без ошибок можно сделать, но не популярны - сложные считаются.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #230 Ответы: #328

298. Сообщение от Анон1110м (?), 09-Янв-26, 21:51   –2 +/
В чём глубинный смысл писать Си вместо C?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #421, #427, #428

303. Сообщение от Bottle (?), 09-Янв-26, 22:20   –1 +/
Зря заминусили, вообще-то под Юниксом неиронично предполагалось сишку использовать для мелких утилит, вызываемых через shell & awk.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

304. Сообщение от Аноним (59), 09-Янв-26, 22:32   +/
Ну правильно. Системы были мультизадачные и многопользовательские? А ты тут такты разбазариваешь. Тебя бы первого остракизму предали за растрату капиталистического имущества.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #280

305. Сообщение от Аноним (310), 09-Янв-26, 22:40   +1 +/
Вот видите, человек всю жизнь писал на С, и в 93 года у него всё ещё хорошая память и речь. А если бы после написания каждых 10 строчек кода трясся как бы не сделать CVE или писал бы на Rust'е, то ...
Отсюда вывод: не берите ничего сложного в голову.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #311, #325

306. Сообщение от Аноним (310), 09-Янв-26, 22:43   +/
>>Интересно они часто там чет теряют касательно обнаруженных уязвимостей?

Теряют часто, но зато уборку делают редко

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #320

307. Сообщение от Аноним (163), 09-Янв-26, 22:44   +/
ДЕМОС. Но не уверен в её лицензионной чистоте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #210 Ответы: #413

308. Сообщение от nio (??), 09-Янв-26, 22:48   +/
> Почти как первая ошибка ворлонов с которой начались их неудачи и обломы

Это какая же?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #322, #324, #341, #387

310. Сообщение от Аноним (310), 09-Янв-26, 22:54   +/
>>Типа "нельзя критиковать Великих Программистов Прошлого!!!" ?

Критикуя Великих Программистов вы показываете что не знаете за что их считают великими

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #224

311. Сообщение от Джон Титор (ok), 09-Янв-26, 22:56   +2 +/
Хорошая память и речь зависит от тренировки ума, еды и сна, наследственности, условий жизни. Не стоит сравнивать - у каждого совсем по другому, но это не значит что других людей нужно обесценивать. Ну вот к чему эти натуженные перепирательства между теми кто программирует на С и rust? Зачем?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #305 Ответы: #319, #357

312. Сообщение от Аноним (310), 09-Янв-26, 22:59   +1 +/
>>Даже если они писали однозначно плохой код, про который высказывался Дуглас Макилрой, цитаты которого уже пол темы мусолят.

В новости же всё объяснено, что "однозначно плохой" - это если бы был написан сейчас, а для начала 70-х это был разумный компромисс. Памяти было мало у компов, как не можете это понять, нельзя было писать большие программы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #224

314. Сообщение от Аноним (333), 09-Янв-26, 23:11   +/
>Чтобы структура вела себя как указатель, дополнительно хранящий размер, нужна перегрузка операторов.

Зачем? Достаточно выкинуть текущие строковые функции типа printf и strcpy и вместо них воткнуть нормальные. Сишникам не лень писать разные операторы для доступа к полю в структуре и по указателю, вот и тут бы не облезли.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #144

316. Сообщение от Аноним (134), 09-Янв-26, 23:23   +/
> память в нем ты ручками вычищаешь

у тебя сильно устаревшие сведения, в паскале давно уже есть управляемые типы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #277 Ответы: #337

317. Сообщение от Джон Титор (ok), 09-Янв-26, 23:25   +/
>> И только с появлением свободных клонов Юникса, таких как BSD-systems и GNU/Linux наши системы стали безопасными.

Как давно мы обсуждали древнюю уязвимость, cve в утилите su? Кто его знает как реально было это написано? Вы вот знаете? Десятилетиями этот свободный код никому не нужен был?

> В свободный код проблематично внедрить бэкдор

- есть новость про Шайхулуд
- бинарный код вы не собираете, порой и автор который его пишет не собирает для репозитория того дистрибутива с которого вы берете и даже порой не создатели дистрибутива
- антивирусы используют хэш-коды и эврестический анализатор для выявления вредоноса, может как-то была изменена архитектура сообществом? Вот даже в Андроиде где вы даёте определенные разрешения и архитектура в этом плане получше не справляется

Вы думаете коммерческий код никто не анализирует?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #58

318. Сообщение от Аноним (134), 09-Янв-26, 23:25   +5 +/
> есть указатели, а это значит, что паскалисты - латентные сишники, портящие память.

В расте есть unsafe, а это значит, что растисты - латентные сишники, портящие память.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #213 Ответы: #332

319. Сообщение от Аноним (319), 09-Янв-26, 23:39    Скрыто ботом-модератором+1 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #311

320. Сообщение от Аноним (319), 09-Янв-26, 23:40   +1 +/
А вот в Майкрософт cve никто не ищет там одни блобы.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #306

321. Сообщение от Аноним (134), 09-Янв-26, 23:46   +1 +/
> TurboPascal, Delphi, FreePascal, GnuPascal, IsoPascal, MacPascal - это не Pascal, это другие языки

Си сформировался в своём классическом виде только в 1999 году. Программа на Си представляет собой портянку из инклудов, завёрнутых в макросы, чтобы инклуды не зацикливались, вызывая самих себя рекурсивно. Это надо делать вручную, в отличие от более продвинутого Паскаля, где есть модули. GCC, Clang, MSVC, TCC, Turbo C, Watcom, Oracle Solaris Studio C, Pelles C, K&R C, ANSI C, C99, C11, C17, C23 - это не Си, это другие языки.

(Чтобы тебе был понятен ответ, подскажу, что Delphi - это не язык).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #274 Ответы: #367, #411, #412

322. Сообщение от Аноним (134), 09-Янв-26, 23:53   +/
> Это какая же?

"Синдром вахтёра".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #308

323. Сообщение от Аноним (329), 09-Янв-26, 23:54   +/
Простите, действительно соврал. Мне очень стыдно...

Прув (вашей информации): https://retrocomputing.stackexchange.com/questions/6960/what...

> This link[https://ed-thelen.org/comp-hist/pdp-11.html] describes the PDP-11/20 as having a speed of 800 nanoseconds. That works out as 1.25 MHz.
> Because that speed is the speed of the memory, (which is tightly connected to the speed of the CPU), and because the databus is no wider than 16 bits, that means that the PDP-11 will at most execute one instruction per clock cycle. And that speed precludes other memory accesses, like DMA or instruction operands, use of the stack or immediate data, etc. So many instructions will take somewhere between 1 and 5 clock cycles.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #238

324. Сообщение от Аноним (134), 09-Янв-26, 23:55   +/
Бот скрывает ответ... Ответ: "синдром чрезмерного величия при своём не очень высоком положении".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #308 Ответы: #326

325. Сообщение от Аноним (134), 09-Янв-26, 23:58   +/
> человек всю жизнь писал на С

Джобс тоже всю жизнь писал на Си... До 56 лет дожил.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #305 Ответы: #340

326. Сообщение от nio (??), 09-Янв-26, 23:59   +/
> Бот скрывает ответ... Ответ: "синдром чрезмерного величия при своём не очень высоком
> положении".

Ну, относительно других цивилизаций положение у них было достаточно высоким, если не считать Теней.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #324

328. Сообщение от Аноним (134), 10-Янв-26, 00:03   +/
А ещё можно было бы написать
var buf: string[100];
и не париться с созданием какого-то нового язычка.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #297

329. Сообщение от Аноним (329), 10-Янв-26, 00:04   +3 +/
> современные программисты пишут либо на rust, либо на ocmal, либо на haskell

Ага, все три современных программиста пишут именно на этом. Один - на расте, второй - на окамле, третий - на хаскеле. А все остальные 99.9999999% программистов пишут на js, java, python и c++.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #275

330. Сообщение от Аноним (134), 10-Янв-26, 00:05   +/
"Настоящим" без разницы, на каком языке создавать выдающиеся исходники.

Настоящие сишники пишут на паскале.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #101

331. Сообщение от Джон Титор (ok), 10-Янв-26, 00:06   +/
>> Не передергивает он. Поток дыреней, безостановочно льющийся более поувека, не очень совместим с термином "безопасность".
>> Эти системы, их технологии и походы разработки в плане безопасности двно и безвозвратно скомпрометированы.

Правильно ли я понимаю? Все сводится к количеству реального сообщества программистов работающим над кодом? Т.е. чем оно больше, тем больше вероятность что код будет просмотрен большим количеством умных людей. Как в компаниях может быть много людей работающих над кодом, так и сообщество открытого кода может быть сформировано большое, ну и количество пользователей, тестировщиков, людей работающих с пользователями и т.д. Ну так дело то получается вовсе не в том открыт или закрыт код, а сколько у вас пользователей, разработчиков, тестировщиков, продавцов и какой бюджет? Ну и качество кооперации и знаний. А открытый код просто даёт возможность его копировать и расширять сообщество нужных людей для поддержки. Т.е. вопрос в том что юристы поддерживают для защиты подхода открытого кода. Вот периодически люди пишут тут про русские продукты которые по их мнению противоречат правилам придуманными американскими юристами. Если они из России и это поддерживают, то даже не осознают что предатели. Почему так на постсоветском пространстве сложилось не любить то что есть и стараться мыслить конструктивно? Я не знаю, это сложилось до моего рождения. Я вот сегодня написал человеку что лучше его живого преподавателя по программированию у него не было людей именно поэтому он стал настолько умничать что какого-то американского деда программиста стал боготворить, которого и в глаза не видел. А админ удалил - общество такое, время такое. Стесняшки. Ну сделаешь ты свой открытый код, получишь какое-то сообщество, а деньги не получишь. Сделаешь закрытый - получишь деньги, но не получишь сообщество что сделает менее безопасный код. Есть ещё нюанс в копировании - открытый код копируют используя наработки, закрытый - наблюдая за идеей или исследуя реверс-инженрингом. Потом смотри далее - получив деньги, получаешь ресурс на разработку, а это больше сообщество, лучше безопасность. Не получив деньги, можете получить их в виде контрибуции - чужая работа это те же деньги вложенные другим человеком. Каким тут боком открытый или закрытый код? О чем вы спорите? Знаете сколько вообще можно производных идей построить кроме open/close source?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #73

332. Сообщение от Anonimbus (?), 10-Янв-26, 00:26   +/
Чётко подмечено!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #318

333. Сообщение от Аноним (333), 10-Янв-26, 00:29   –2 +/
>Так у Free Pascal'я система типов как раз продвинутая: есть

Зависимые типы в паскале есть? Нет? Ну значит продвинутой системы типов нет.
>- небезопасные указатели для обраб. данных на низком уровне ( ^T );

Здесь сразу же нужны зависимые типы как минимум. Афинные типы тоже понадобятся.
>- управляемые указатели ( которые на тип-интерфейс), они как smart pointer;

С зацикливанием и утечкой памяти?
>- динамические массивы и строки - у них память освобождается автоматически.

Как именно?

Для 1990-ых это может и было интересно, но для 2026 этого уже очень мало.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #278

334. Сообщение от Аноним (-), 10-Янв-26, 00:51   +/
> Да, подумаешь, произошёл DoS всей системы, с кем не бывает.

Нет, это большая проблема.
Но с RCE было бы все гораздо хуже.

> А, да, точно, "виновата" строчка unsafe где буквально происходит обычное удаление элемента из списка, а не та safe часть кода, которая отпустила лок на лист, продолжая работать с данными из него, пусть даже сделав локальную копию (нахера?).

Да, работа с unsafe кодом требует внимательности.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #242 Ответы: #368

335. Сообщение от Аноним (-), 10-Янв-26, 00:57   +/
> https://wiki.freepascal.org/smartpointers

Ого!
Это то до чего дыряшечникам еще топать и топать.
Они пока только осилили добавить Bool вместо макросовой дрыcтни.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #284 Ответы: #394

337. Сообщение от Аноним (277), 10-Янв-26, 01:23   +/
> у тебя сильно устаревшие сведения, в паскале давно уже есть управляемые типы.

Ну покажи мне автоматически вычищающийся TStringList.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #316

338. Сообщение от Аноним (-), 10-Янв-26, 01:27   –1 +/
> крашашийся г*код и выкатывали его в продакшн! А неладное начали подозревать
> только когда их ВНЕЗАПНО поимел червь Морриса.

Они это и сейчас продолдают. Вон в rust - брякнуться в паник это вообще стандартная реакция программы. Зато безопасТно брякается, не то что всякое! Хотя CVE вон там рядом все равно почему-то получили. И чего это они?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45 Ответы: #370

339. Сообщение от Аноним (277), 10-Янв-26, 01:33   +/
> Программа на Pascal должна находиться только в одном файле исходного текста, о каком серьёзном применении Паскаля может идти речь?

Ты не поверишь, но в Си тоже! Тебе сишочный код из разных #include в одну портянку склеивает левая приблуда (макропроцессор).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #274 Ответы: #348

340. Сообщение от альбанаромина (?), 10-Янв-26, 01:41   +/
Джобс ничего не писал. Ни на си, ни на *ососи. У него для этого был Возняк.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #325 Ответы: #386

341. Сообщение от Аноним (-), 10-Янв-26, 01:46   +/
>> Почти как первая ошибка ворлонов с которой начались их неудачи и обломы
> Это какая же?

Ворлоны очень развитая раса, помешанная на порядке и правилах. Они познали многие тайны вселенной, достигли вечной жизни и даже возможности расщепления своего разума на инстансы, не говоря о мелочи типа "направления развития" более новых рас и милых шалостей типа патчинга генотипа под свои нужды. Они стали считать себя самыми умными в вселенной. Что достигли почти всего. И нет никого равного им. Что могут указывать другим как жить и что делать. Однажды они обнаружили что кроме обычной вселенной и гиперпространства есть еще что-то. Называемое "third space". И конечно они запилили туда гейтвей. Что может пойти не так с гейтвеем, если его сделает раса самоуверенных всезнаек?

Оказалось что третье измерение населено еще более развитой расой, победившей все остальные. Они ненавидят все разумное что не они и уничтожают других на корню. И настолько продвинуты, что вскоре многие ворлонцы и их корабли просто перешли под контроль разума этой расы - и стали воевать против своих. Ворлонцы чуть не сыграли в ящик и чуть не угробили всю галактику, и лишь чудом избежали участи остальных рас угробленых этими милашками. Говорят что это была первая ошибка, с которой начались остальные ошибки и неудачи у расы всезнаек помешанных на порядке.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #308

342. Сообщение от Кошкажена (?), 10-Янв-26, 01:49   –2 +/
> но и помнит технические подробности

...или он все преукрасил (выдумал) как любят делать люди в возрасте, вспоминая старое. По факту воспоминания так и работают примерно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51

344. Сообщение от Кошкажена (?), 10-Янв-26, 01:51   –3 +/
> А вот Дуглас говори

Да малоли что он говорит. Дениса уже не спросить, но есть Кен Томпсон, а также Роб Пайк. Хотите назвать их бракоделами?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #70 Ответы: #395, #399

345. Сообщение от Аноним (345), 10-Янв-26, 01:53   –2 +/
> В расте есть нормальные строки вместо char*
> И их длина считается за O(1) - там просто возвращается значение.

Я б посмотрел как ты имеючи только асм вообще забутстрапишь свой rust хоть как-то. Особенно с его чудной полисей что текущая версия собирается только предыдущей.

Поэтому есть те кто может поднять платформу с ноля при zero assumptions. И есть все остальные. И вы никогда не будете равные первым по их эпичности, сколько бы не тявкали.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #47 Ответы: #398

346. Сообщение от Дидыemail (ok), 10-Янв-26, 02:30   +/
>что-то видимо пошло не так, и без распроклятого нибизопастного си опять не получилось.

Да всё так. Без нынче модно проклинаемого C и asm низкоуровневые штуки не написать.
Как старый смаллтокер скажу, что все st vm (которые я видел, не считая экзотики поверх js) написаны исключительно на C / C++ и прекрасно себя чувствуют.

Многие ярые пропагандисты rust похоже не понимают истинного назначения UB в С. Вот определили они умножение знаковых интов при переполнении и что? Кому это надо вообще? Вот в C это UB - явное указание программисту избегать таких ситуаций.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #156 Ответы: #400

347. Сообщение от Аноним (347), 10-Янв-26, 02:56   +/
Это все еще в UHG описано. Весь евнухс таким всегда был.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53

348. Сообщение от Аноним (348), 10-Янв-26, 03:59   +/
Склеивает только заголовочные файлы, а единицы трансляции (т.е. файлы .c) остаются на месте.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #339 Ответы: #417

349. Сообщение от Аноним83 (?), 10-Янв-26, 04:36   +/
> И поэтому мы будем дергать getc() в цикле.

У вас есть pipe/socket, вам нужно прочитать из него строго одну строку ввода, потому что код дальше будет читать следующую строку.
Как вы будете это реализовывать кроме чтения по одному символу в поисках '/n'?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #232

350. Сообщение от Bottle (?), 10-Янв-26, 04:46   +1 +/
А для этого надо язык не на коленке сочинять, как это сделал Ритчи.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #295

351. Сообщение от Аноним83 (?), 10-Янв-26, 04:50   –2 +/
> Ну, например, чтобы не бежать каждый раз O(n) в поисках нуля?

А зачем?
Вы сами себе придумали проблему.
Достаточно просто рядом с указателем на область памяти хранить размер.


> Причем заметь: компилятор-то уже знает длину строкового литерала, но гениальный дизигн "на коленке" в 99% случаев это не позволяет использовать.

Это вы про: const char* = "abc".
Так оно через (sizeof(X) - 1) когда надо доступно.
По скорости memcpy() vs strlcpy() не будет заметно отличатся для строк "типичной" длины (читай до 16 символов), поэтому редко кто заморачивается. По безопасности тоже отличий нет, тк /0 гарантирован для таких строк.


> Ну, или, не сношаться с буферами фиксированного размера

Буфера на стёке удобны, их и освобождать не надо. Никаких сношений там нет.


В современном С мире осталось мало API где принимают только const char* без размера и полагаются на /0 в конце.
Всякие статические анализаторы кода прекрасно находят все подозительные места, если про них писатель не знал или забыл. Те проблема со строками в С не актуальна.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #216 Ответы: #393

352. Сообщение от Аноним83 (?), 10-Янв-26, 05:01   –1 +/
Я вам расписывал как и почему так писали в те времена.

Зачем было добавлять проверки в su на предмет переполнения - было не понятно в те времена: код разбухал, а при неверном пароле юзер всёравно обламывался, те проверки были бесполезны.
Более того, возможно на тех компиляторах/архитектурах оно и не могло быть проэксплуатировано в виду их особенностей.


> Знаете, если проприетарщики не слишком мешают, можно реализовать флеш плеер самостоятельно, но на этот раз правильно.

https://github.com/ruffle-rs/ruffle
вон на ржавчине переписали, так что оно то не работает то крашится, 5к иссуесов :)
У дидов то хотя бы игры и видео работали :))))

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #237 Ответы: #396

353. Сообщение от Аноним (353), 10-Янв-26, 05:07   +/
> То-то же современные программисты пишут либо на rust, либо на ocmal, либо
> на haskell, где ошибочная программа, в отлчии от си компилироваться не
> будет. А ведь есть ещё Lean и Idris.

Почему-то в топах рейтингов яп совсем другие языки. А на каком месте там haskell и ocaml это вообще никто не скажет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #275

354. Сообщение от Аноним83 (?), 10-Янв-26, 05:08   +/
А ничего что математический сопроцессор появился после написания этого кода?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #233 Ответы: #388

355. Сообщение от Аноним (355), 10-Янв-26, 05:11   +/
Все осознанно.

Там штучный суперкомп аж на 256кб памяти, что в миллион раз меньше чем сейчас у любого на столе.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #66 Ответы: #402

357. Сообщение от Аноним (360), 10-Янв-26, 05:37   +/
Хорошая речь м память зависит от начитанности.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #311

358. Сообщение от Аноним (360), 10-Янв-26, 05:39   +/
Что это означает в контексте вопроса?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #270

359. Сообщение от Аноним (360), 10-Янв-26, 05:44   +1 +/
Тоже задался этим вопросом. Но надо помнить, что исходный код уже публиковался Opensolaris под открытой лицензией, по сути System V.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #265

360. Сообщение от Аноним (360), 10-Янв-26, 05:50   +1 +/
Терминал это все лучшем случае, если не перфокарты.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #227 Ответы: #371, #372

362. Сообщение от Аноним (362), 10-Янв-26, 06:46   +/
Тогда неисполнимых стеков не было, какой еще нафиг ROP.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #76

364. Сообщение от Аноним (-), 10-Янв-26, 07:40   +/
Исходные коды AT&T продала давно, долгое время хозяева менялись. С появление GNU/Linux и BSD-systems ценность UNIX упала. Последний хозяин - Novell, торговую марку UNIX передала некомерческой организации The Open Group. И теперь эта организация может сертифицировать любой дистр на соответствие стандарту Single UNIX Specification. Кстати, стандарт POSIX является частью стандарта Single UNIX Specification. Каждая новая версия дистрибутива или операционки должна проходить сертификацию заново. Ну, если она хочет носить гордое имя UNIX постоянно.

Прикол в том, что какая-то версия macOS прошла сетификацию и по праву носила название UNIX  :). Не шучу, я серъёзно. Ах да чуть не забыл, сертификация платная поэтому GNU/Linux дистры её игнорируют. За право ношения значка UNIX бабки надо платить, бабки!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #265 Ответы: #379, #381, #448

366. Сообщение от Аноним (366), 10-Янв-26, 08:44   +1 +/
Я не понял, там что GUI был, да ещё цветной, да ещё в приличном разрешении?! Как вообще железо того времени это всё тянуло, да ещё без аппаратного ускорения, если у нас без аппаратного ускорения на современных компах всё очень тормознуто и невесело? И как они могли разбазаривать вычислительные ресурсы на GUI, если комп размером с зал купили явно не для этого, а для симуляций атомных бомб и полупроводников?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #380

367. Сообщение от Tron is Whistling (?), 10-Янв-26, 10:19   +/
Ты не поверишь, но я один из редких иногда пишущих, который всю жизнь мечтал о хедерах в паскале. Разделение uses на interface/implementation и невозможность рекурсии по interface - это полный 3.14-ц, который до сих пор актуален. Объявить в юните A тип, ссылающийся на другой тип из юнита B, и заодно наоборот - в юните B тип, ссылающийся на тип из юнита A... всё, приплыли, и надо либо костылить отдельный юнит, либо перетаскивать один из типов, полностью руша всю семантику использования.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #321 Ответы: #401, #409, #414

368. Сообщение от Tron is Whistling (?), 10-Янв-26, 10:29   +/
Есть ещё такой критерий, как простота реализации.

И вот тут DoS и RCE внезапно встают на одну планку.

Потому что RCE ещё реализовать надо - и это очень непросто, в абсолютном и подавляющем большинстве случаев potential RCE будет использован просто как возможность уронить систему, т.е. DoS.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #334

369. Сообщение от Tron is Whistling (?), 10-Янв-26, 10:32   –1 +/
Это вы ещё код на хрусте с чем-нибудь в одном проекте совместить не пытались.
Ах да, он ж динамически не линкуется :D :D :D
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #294

370. Сообщение от Tron is Whistling (?), 10-Янв-26, 10:38   +/
Брякнуться в паник - это да, очень пригодно для реалтайм систем. А чо, нормально, умерла так умерла.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #338 Ответы: #403

371. Сообщение от 1 (??), 10-Янв-26, 10:48   +/
ну не, PDP-11 я думаю все-таки терминал, но конечно без мыши
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #360

372. Сообщение от 1 (??), 10-Янв-26, 10:52   +/
да, помнится читал, у них там дисплей с круглым экраном был, как на радаре. они еще игрушку какую-то для него запилили.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #360 Ответы: #376, #377

376. Сообщение от 1 (??), 10-Янв-26, 11:01   +/
круглый дисплей был на PDP-7 -- машине на которой все начиналось, но там тоже уже не перфокарты были. Это потом они переползли на PDP-11. А игруха была "Space Travel" 1969 года
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #372

377. Сообщение от 1 (??), 10-Янв-26, 11:02   +/
игруха была возможно и не для круглого дисплея
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #372

379. Сообщение от Аноним (360), 10-Янв-26, 11:26   +/
>какая-то версия macOS прошла сетификацию

macOS 15 Sequoia актуальная прошла, грядущая  macOS Tahoe (26) тоже в списке.
https://www.opengroup.org/openbrand/register/apple.htm

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #364

380. Сообщение от Аноним (146), 10-Янв-26, 11:26   +2 +/
На скриншоте показывают эмулятор PDP-11 в терминале, запущенном в каком-то GUI.

Разумеется, GUI в те времена еще не придумали. Тогда код-то зачастую писали в строковом редакторе (собственно, оттуда и до сих пор сохранившийся ed), с матричным принтером в качестве stdout.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #366 Ответы: #419

381. Сообщение от Аноним (360), 10-Янв-26, 11:27   +/
Так что все пользователя Макбуков это ту ЮНИКСоиды! То-то же!
https://www.opengroup.org/openbrand/register/index.html
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #364

382. Сообщение от Аноним (418), 10-Янв-26, 12:32   +/
> если сделать комбо, когда строки нуль-терминированные

В C++ так делают. В нативных строках D и Rust терминатора нет, но D умеет без костылей склеивать Си-строки с нативными: dStr ~ cStr[0..strlen(cStr)];

> Полноценное обобщенное программирование
> не для продвинутого макроассемблера
> слишком далеко от железа

Расскажи Линусу, что он неправильно делает, у него всё ядро в _Generic, __auto_type, typeof(val) v = val.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #223 Ответы: #383

383. Сообщение от Аноним (418), 10-Янв-26, 12:35   +/
...и ещё сотня файлов с __builtin_constant_p().
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #382

384. Сообщение от Аноним (347), 10-Янв-26, 12:58   +/
>И поэтому мы наперед откусим 100 байт стека.

char    password[100];
char    pwbuf[100];
int    ttybuf[3];
main()
{

Первые 2 - в сегменте данных, не на стеке

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #271 Ответы: #457

385. Сообщение от Аноним (385), 10-Янв-26, 13:38   +/
>Вот и ответ на вопрос "сколько строк на СИ достаточно чтобы написать CVE")))

Да ты не суй всякую гадость в программу, и нормально будет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

386. Сообщение от Аноним (163), 10-Янв-26, 14:17   +1 +/
NeXTSTEP он программировал уже без Возняка и на Objective-C.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #340 Ответы: #423

387. Сообщение от Лиечка (?), 10-Янв-26, 14:29   +/
отсылка к фильму "Вавилон-5: Третье пространство"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #308

388. Сообщение от Аноним (418), 10-Янв-26, 14:48   +/
Это код из 1993 или позже. "Как делить u64, если ещё не вышел C99 с требованием реализовать u64 в компиляторе".
https://github.com/simh/simh/blob/master/sim_timer.c#L421

clever multiply - это про работу компилятора, подбирать разложения для деления на константу
Например, u32 / 10000 == u64(u32) * 3518437209 / 2^45.
Но если у нас нет u64 в языке, то мы даже вручную переносимо это не повторим. i386 умеет делать u32*u32=u64, а сишка нет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #354 Ответы: #407, #472

389. Сообщение от Андрей (??), 10-Янв-26, 14:59   +/
Интересно, сколько эта магнитная лента пролежала... к вопросу о бекапах на lto ))
Ответить | Правка | Наверх | Cообщить модератору

390. Сообщение от Аноним (390), 10-Янв-26, 16:13   +1 +/
Мало делать бэкапы - надо еще и ответственно их хранить.
Ответить | Правка | Наверх | Cообщить модератору

391. Сообщение от Аноним (391), 10-Янв-26, 16:20   +/
Зря заминусили. Керниганы с Ричами в своих книжках так и писали, что синтаксис Си был разработан с упором на скорость написания программ, отсюда и ++i и i-- в любом месте, вместо i = i + 1 отдельной строкой.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #392

392. Сообщение от Аноним (418), 10-Янв-26, 17:35   +/
> отсюда и ++i и i-- в любом месте,
> вместо i = i + 1 отдельной строкой.

Так короткая альтернатива для i = i + 1 - это в любом случае хорошая вещь, которая избавляет от некоторых ошибок:
- сложное имя переменной вместо i, можно ошибиться при дублировании или забыть поменять в двух местах.
- понятное имя получается слишком длинным, чтобы его использовать в строке два раза и не превратить код в кашу.
- инкремент выпиливают из языков по религиозным соображениям: проблема неоднозначных приоритетов решается без этого (Go смог: https://stackoverflow.com/a/25800388)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #391 Ответы: #449

393. Сообщение от Аноним (277), 10-Янв-26, 17:50   +/
>> Ну, например, чтобы не бежать каждый раз O(n) в поисках нуля?
> А зачем?

Зачем не бежать по всей строке? Ну ок...

> Вы сами себе придумали проблему.

Кто "вы"? Не "мы", а гениальные дизайнерв языка С и его стандартной библиотеки.

> Достаточно просто рядом с указателем на область памяти хранить размер.

Только в сишных строках этого почему-то нет.

> Это вы про: const char* = "abc".
> Так оно через (sizeof(X) - 1) когда надо доступно.

Ну удачи тебе дергать sizeof для const char*. Господи, да ты же в С обсолютно некомпетентен...

>> Ну, или, не сношаться с буферами фиксированного размера
> Буфера на стёке удобны, их и освобождать не надо. Никаких сношений там нет.

Только вот что-то люди уже более полувека вылазят за их пределы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #351 Ответы: #405

394. Сообщение от ХрюХрю (?), 10-Янв-26, 17:59   +/
bool в си не нужен!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #335

395. Сообщение от Аноним (277), 10-Янв-26, 18:02   +1 +/
>> А вот Дуглас говори
> Да малоли что он говорит.

С фига ли "мало ли что"? Только лишь потому, что его слова разрушили твой розовый мирок "крутых сишных дидов"?

Если ты намекаешь, что он лжет, то неплохо бы тебе привести доказательства (хотя, казалось бы, вот код у тебя под носом). Но вместо этого ты фантазируешь, что сказал бы почивший Денис Ричи.

> но есть Кен Томпсон, а также Роб Пайк

Ну иди спроси их. Уверен, они выведут лжеца Дугласа на чистую воду.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #344 Ответы: #397

396. Сообщение от Аноним (277), 10-Янв-26, 18:07   +/
> Я вам расписывал как и почему так писали в те времена.

Да, а еше нам рассказал Дуглас Макилрой. И его версия отличается от твоей.

Кому же нам верить? 93 деду, бывшему непосредственным учасником тех событий, или опеннетному непойми кому? 🤔

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #352 Ответы: #408

397. Сообщение от Кошкажена (?), 10-Янв-26, 18:08   –1 +/
>>> А вот Дуглас говори
>> Да малоли что он говорит.
> С фига ли "мало ли что"? Только лишь потому, что его слова
> разрушили твой розовый мирок "крутых сишных дидов"?
> Если ты намекаешь, что он лжет, то неплохо бы тебе привести доказательства
> (хотя, казалось бы, вот код у тебя под носом). Но вместо
> этого ты фантазируешь, что сказал бы почивший Денис Ричи.

Как возбудился растовщик. Веришь словам, которые не понятно как проверить.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #395 Ответы: #406, #422

398. Сообщение от Аноним (333), 10-Янв-26, 18:18   +2 +/
>Я б посмотрел как ты имеючи только асм вообще забутстрапишь свой rust хоть как-то.

Давайе придумаем абсурдно нереальный сценарий, и будем судить на основе него. А теперь вам абслютно симметричный ответ: как вы имея только ассемблер собираетесь работать с gcc, glibc и llvm? Никак? Или всё таки как-то собираетесь? Ну вот и с растом ситуация полностью аналогичная.
>Поэтому есть те кто может поднять платформу с ноля при zero assumptions.

Для начала, вам нужно обосновать, зачем это нужно. Поскольку от ваших велосипедов, написанных на ассемблере в 2026 году мир лучше не станет, зато гарантированно откатится по уровню развития до 1970-ых.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #345 Ответы: #434

399. Сообщение от Аноним (333), 10-Янв-26, 18:22   +/
>Хотите назвать их бракоделами?

Да, хочу. Допустим, во время разработки си они не понимали, какого монстра они делают. Но во времена разработки голанга, они уже должны были понимать, в какого монстра превратился си, и каким монстром будет голанг. Умные люди, уже в 1980-ых понимали, как сделать лучше, и уже начали работу над Standard ML. Во времена нулевых уже был и хаскель, и окамл.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #344 Ответы: #441, #442

400. Сообщение от Аноним (333), 10-Янв-26, 18:31   +/
>Да всё так. Без нынче модно проклинаемого C и asm

Не следует смешивать ассемблер и си. Программа на ассемблере строго определена, в то время как компилятор си может выдать абсолютно любой произвольный код.
>Многие ярые пропагандисты rust

Лично я против раста, из-за того, что его система типов слишком слаба, по сравнению с тем же ats.
>похоже не понимают истинного назначения UB в С

Единственное назначение UB - стрельба по ногам.
>Вот в C это UB - явное указание программисту избегать таких ситуаций.

Ну сколько можно лгать? Указание избегать ситуаций - это либо ошибка компиляции, либо предупреждение. https://habr.com/ru/articles/827752/ Вот вам простейший пример, как компилятор может переделать программу по своему собственному усмотрению, просто выкинув условие. И если в данном надуманном примере всё просто и понятно, то когда у сишников ломается код в больших программах, то они долго не могут понять, в чём именно проблема.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #346

401. Сообщение от Аноним (333), 10-Янв-26, 18:34   +/
>A... всё, приплыли, и надо либо костылить отдельный юнит, либо перетаскивать один из типов, полностью руша всю семантику использования.

Узнаю сишников. Вам дали язык, в котором компиляция возможна за вменяемое время, а вы хотите его сломать, делая компиляцию столь же медленной, как и в крестах.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #367 Ответы: #467

402. Сообщение от Аноним (333), 10-Янв-26, 18:36   +/
Однозначно, если выделить ещё два байта(или какой там длины указатели), на конец строки, то всё лопнет, и компьютер взорвётся как атомная бомба - логика настоящих сишников.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #355

403. Сообщение от Аноним (333), 10-Янв-26, 18:42   +/
>Брякнуться в паник - это да, очень пригодно для реалтайм систем.

UB для систем реального времени точно так же противопоказано, как и паника.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #370 Ответы: #459, #468

404. Сообщение от pofigist (?), 10-Янв-26, 18:46   +/
> Какой pdp-11 в квартире?

Ну например у ArkanoiD стоял PDP-11/75. В квартире. Это Питер детка...🤣

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37

405. Сообщение от Аноним83 (?), 10-Янв-26, 19:11   +/
> Зачем не бежать по всей строке? Ну ок...

Зачем где то бегать когда рядом можно держать site_t с готовым результатом!?

> Только в сишных строках этого почему-то нет.

Так и строк в С как таковых нет, кроме того что в ковычках в коде.
Остальное это указатели на области памяти, где вероятно /0 указывает на границу буфера/полезных данных.
Искать там /0 или ложить рядом size_t - выбор каждого программиста в каждой отдельной ситуации.


> Ну удачи тебе дергать sizeof для

Это вы уже сами с собой спорите, я немного другое написал.


> Только вот что-то люди уже более полувека вылазят за их пределы.

Да вот только лет 20 как это стало проблемой программиста а не пользователя который фигню сделал.
И программисты эту проблему решили неплохо так за последние 15 лет: если раньше оно само могло крашнутся, то сейчас нужно фазерами и анализаторами долго выискивать и потом пытатся придумать как это реализовать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #393

406. Сообщение от Аноним (277), 10-Янв-26, 19:17   +/
> Как возбудился растовщик.

Кто? Лучше попытайся по существу что-то внятное ответить на аргементы.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #397

407. Сообщение от Аноним83 (?), 10-Янв-26, 19:17   +/
А с чего вдруг компилятор должен что то подбирать?
Ему дали код - он его должен транслировать в машинный, на этом всё.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #388 Ответы: #410, #478

408. Сообщение от Аноним83 (?), 10-Янв-26, 19:20   +/
В чём отличия то?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #396

409. Сообщение от randomize (?), 10-Янв-26, 19:23   +/
> Объявить в юните A тип, ссылающийся на другой тип из юнита B, и заодно наоборот - в юните B тип, ссылающийся на тип из юнита A... всё, приплыли

Ну и правильно, так делать не надо. Стол ссылается на плотника, а плотник - на стол...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #367 Ответы: #464, #465

410. Сообщение от Аноним (418), 10-Янв-26, 19:57   +/
Ты говоришь, что "компилятор должен", не я.

Это *подходящая* работа для компилятора. Программист пишет переносимый код (он же не ассемблер взял), компилятор генерирует хороший код под конкретные платформы. Он не обязан генерировать хороший код. Но пользоваться таким компилятором тоже не обязаны. Обычно конфликта нет, потому что компилятор-без-оптимизаций нужен для бутстрапа или обучения, например.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #407 Ответы: #435

411. Сообщение от Аноним (411), 10-Янв-26, 20:01   +/
C99 — днище полное. Вот 89-й C гораздо лучше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #321 Ответы: #418

412. Сообщение от Аноним (-), 10-Янв-26, 20:08   –2 +/
>Программа на Си представляет собой портянку из инклудов, завёрнутых в макросы, чтобы инклуды не зацикливались

Это что за бред?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #321 Ответы: #415

413. Сообщение от Аноним (-), 10-Янв-26, 20:11    Скрыто ботом-модератором+1 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #307

414. Сообщение от Аноним (277), 10-Янв-26, 20:12   +/
> Объявить в юните A тип, ссылающийся на другой тип из юнита B, и заодно наоборот - в юните B тип, ссылающийся на тип из юнита A... всё, приплыл

Ты и в С так не сделаешь. Максимум - указатель на предварительно объявленый тип.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #367 Ответы: #463

415. Сообщение от Аноним (277), 10-Янв-26, 20:15   +/
>>Программа на Си представляет собой портянку из инклудов, завёрнутых в макросы, чтобы инклуды не зацикливались
> Это что за бред?

Что, никогда не программировал на С? Ну тогда вполне очевидно, что "инклуды, завернутые в макросы" для тебя звучит как бред. А вот у сишников это суровая реальность.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #412 Ответы: #426

417. Сообщение от Аноним (277), 10-Янв-26, 20:18   +/
> Склеивает только заголовочные файлы, а единицы трансляции (т.е. файлы .c) остаются на месте.

Вот именно. Единица трансляции - это сугубо один .c из которого получается сугубо один .o. А дальше с ними вообще работает линковщик, а не компилятор.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #348

418. Сообщение от Аноним (418), 10-Янв-26, 20:25   +/
> C99 — днище полное. Вот 89-й C гораздо лучше.

C89 - золотая середина. Фиксированных типов из stdint и деклараций переменных по месту ещё нет, но бессмысленные кривые оптимизации уже есть (strict aliasing).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #411 Ответы: #445

419. Сообщение от Аноним (-), 10-Янв-26, 20:25   +/
Ради интереса, писал на GNU ed, прикольно было.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #380

420. Сообщение от Аноним (420), 10-Янв-26, 21:03   +/
Для своего времени была топ, сейчас как и её производные(Linux/BSD) устаревшая концепция монолитного ядра
Ответить | Правка | Наверх | Cообщить модератору

421. Сообщение от Аноним 80_уровня (ok), 10-Янв-26, 21:10   +/
Парсер меньше ломается
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #298

422. Сообщение от Аноним (277), 10-Янв-26, 21:21   +/
> Веришь словам, которые не понятно как проверить.

Разуй глаза, у тебя код под носом.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #397 Ответы: #440

423. Сообщение от Аноним (423), 10-Янв-26, 21:21   +/
Джобс был гением маркетинга, а не программистом.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #386

425. Сообщение от Мимо проскочил (?), 10-Янв-26, 21:26   +/
Господа, кто пишет на современном Си (не MISRA и не Реалтайм, а что-то системное), считается ли нормальным использовать goto, как в коде сабжа, без спагетти? И если нет, чем заменяется?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #431, #432, #436, #437, #473

426. Сообщение от Сталин (?), 10-Янв-26, 21:28   +1 +/
#pragma once
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #415

427. Сообщение от Сталин (?), 10-Янв-26, 21:29   +/
Потому что «С» — это «эс».
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #298

428. Сообщение от Аноним (411), 10-Янв-26, 21:55   +/
Потому в русском языке есть предлог "с".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #298

429. Сообщение от Аноним (411), 10-Янв-26, 21:58   +/
> в 2025м

Ты по юлианскому календарю живёшь?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

430. Сообщение от Аноним (432), 10-Янв-26, 22:04   +/
Да, ну и, собственно, все эти прыжки и ужимки середины-конца 90-х: евнухс-евнухс, "моя операционная система" и т.п. В UHG было все по делу, а какие-то преимущества евнуxс имел только перед Win9x.
Ответить | Правка | Наверх | Cообщить модератору

431. Сообщение от Аноним (-), 10-Янв-26, 22:05   +/
Неважно системное или не системное стараемся писать хороший структурный код. Лично мне никогда goto не понадобилось. Незнаю, может со мной что-то не так (шутка). Как только появится надобность выйти из глубоких вложений при помощи goto, я обязательно тебе отпишусь.

А если серъёзно, просто пиши хорошо читаемый код с копилефт лицензией. И будет тебе счатье.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #425 Ответы: #438, #443

432. Сообщение от Аноним (432), 10-Янв-26, 22:06   +1 +/
>считается ли нормальным использовать goto

Считается. Нормальный способ обработки ошибок. Просто функции не должны быть на 20 экранов.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #425

434. Сообщение от Аноним83 (?), 10-Янв-26, 23:38   +/
Так дело в том, что не х86 единым.
Сейчас в приличных вузах технических студенты свои системы комманд и процы делают, там нет гигагерц и гигабайт чтобы собирать ржавчину и ллвм, но накорябать простенький интерпретатор С и собрать им нечто по сложнее - вполне реально.

Без велисипедов на асме у вас ни ОС ни написать ни кодеков приличных - не тормозящих.
Вон AV1 на русте как то не пользуется популярностью, в отличии от С+асм поделок.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #398

435. Сообщение от Аноним83 (?), 10-Янв-26, 23:44   +/
В исходном сообщении написан конкретный код, с чего бы компилятору там какие то множители подбирать!?

Попробовать распихать по регистрам, срезать лишние операции, развернуть циклы - да, но подбирать множитель - это к ИИ.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #410 Ответы: #455, #460

436. Сообщение от Аноним (411), 10-Янв-26, 23:45   +/
Goto иногда полезен, хоть и очень редко, например, в выходе из множества циклов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #425

437. Сообщение от Аноним83 (?), 10-Янв-26, 23:46   +/
goto ничем не заменяется, удобно юзать в обработке ошибок, в остальных случаях встречается крайне редко.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #425

438. Сообщение от Аноним (411), 10-Янв-26, 23:47   +/
> копилефт

Зачем себя же ограничивать? Корпорации на твой копилефт болт кладут и используют твой код без спроса в своей проприетарщине. Лучшая лицензия — MIT.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #431

439. Сообщение от Аноним (439), 10-Янв-26, 23:55   +/
ппц они там превозмогали, в тамошнем ассемблере.

    mov    cryptp,r1
1:
    movb    (r1)+,r0
    beq    1f
    jsr    pc,pput
    br    1b
1:
    mov    $':,r0
    jsr    pc,pput

Метки огонь, следи теперь, если нужно вставить ещё одну между ними, исправить все 1f или 1b на нужные 2b и 2f и так далее.

С таким ассемблером они не могли не придумать Си.

И да, из кода passwd.s непонятно, какая максимальная длина пароля могла храниться в passwd. А в login.c похоже проверялось только первые 8 символов пароля.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #479

440. Сообщение от Кошкажена (?), 11-Янв-26, 00:04   –1 +/
>> Веришь словам, которые не понятно как проверить.
> Разуй глаза, у тебя код под носом.

У меня почти весь код в системе на с или с++. А что касается какого-то старого коа, который кто-то нашел где-то, да и еще и нейронкой сверху обработал... А потом разработичк сказал что-то... Растовщикам-идеалистам не понять. Для такого нужно уметь анализировать.  

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #422 Ответы: #446

441. Сообщение от Кошкажена (?), 11-Янв-26, 00:10   +/
>>Хотите назвать их бракоделами?
> Да, хочу. Допустим, во время разработки си они не понимали, какого монстра
> они делают. Но во времена разработки голанга, они уже должны были
> понимать, в какого монстра превратился си, и каким монстром будет голанг.
> Умные люди, уже в 1980-ых понимали, как сделать лучше, и уже
> начали работу над Standard ML. Во времена нулевых уже был и
> хаскель, и окамл.

Причем тут Си? ML - это развитие типизированного лямбда исчисления. Там люди в первую очерель решали математические задачи. И каким образом go относится ML, есди по дизайну не поощрается функциональный подход?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #399 Ответы: #458

442. Сообщение от Кошкажена (?), 11-Янв-26, 00:11   –1 +/
>>Хотите назвать их бракоделами?
> Но во времена разработки голанга, они уже должны были понимать, в какого монстра превратился си, и каким монстром будет голанг.

Опять растовщики что-то выдумали.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #399

443. Сообщение от Мимо проскочил (?), 11-Янв-26, 01:24   +/
Благодарю.
> появится надобность выйти из глубоких вложений при помощи goto

А как выходите тогда?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #431

444. Сообщение от Аноним (277), 11-Янв-26, 01:45   +/
> А причет тут раст?

При том, что приплетать Раст - это стандартная реакция местных экспертов, когда кто-то критикует сишечку.

https://ru.wikipedia.org/wiki/Tu_quoque

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

445. Сообщение от Аноним (445), 11-Янв-26, 01:48   +/
> C89 - золотая середина. Фиксированных типов из stdint и

Правильно - что же это за портабельный то код - если не развалится к хренам при портировании алго на другую платформу от изменения размера int? Диды в недоумении - как это, писать сразу работающий код который не надо "портировать" и он сразу работает? DFT? DFx? Не, не слышали!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #418

446. Сообщение от Аноним (277), 11-Янв-26, 01:55   +1 +/
> У меня почти весь код в системе на с или с++.
> А что касается какого-то старого коа,

Мы этот старый код и обсуждаем, если ты забыл. К чему ты вообще приплел код из своей системы?

> да и еще и нейронкой сверху обработал

Ах, так это нейронка подложила свинью сишочным дедам? А в оригинале там были проверки как положено? Господи, вот это копиум!

> А потом разработичк сказал что-то..

Намекаешь на то, что Дуглас Макилрой соврал?

>>> Веришь словам, которые не понятно как проверить.
>> Разуй глаза, у тебя код под носом.
> Для такого нужно уметь анализировать.  

Ты уже наанализировал, спасибо. Анализ уровня "вы все врети!".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #440 Ответы: #482

447. Сообщение от Аноним (277), 11-Янв-26, 02:04   +/
> А в проприетарном - 20 лет.

* 23 года в X.Org жила CVE-2013-6462.
* 27 лет (27, Карл!) в том же X.Org жила CVE-2023-43785

Ну что, помог тебе твой открытый код. Тысячи глаз!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #139

448. Сообщение от oldzoomer (ok), 11-Янв-26, 03:05   +/
>Последний хозяин - Novell

*SCO Group, сейчас это Xinuos.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #364

449. Сообщение от Аноним (391), 11-Янв-26, 03:20   +/
Спасибо, один из коментариев особенно забавен:
inc := func(i *int) int { *i++; return i }
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #392 Ответы: #452

450. Сообщение от Аноним (-), 11-Янв-26, 04:05   +/
> держи:
> typedef unsigned char byte;

На C99+ лучше uint8_t - потому что то что char именно byte ниоткуда не следует. И есть например выводки забавных DSP где char - внезапно - 16 бит. И все типа по стандарту, стандарт позволяет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #236 Ответы: #451

451. Сообщение от Аноним (418), 11-Янв-26, 05:25   +/
> потому что то что char именно byte ниоткуда не следует

Это из текста стандарта следует, уже говорил тебе.

3.7.1. character 〈concrete〉 - single-byte character - bit representation that fits in a byte.
https://port70.net/~nsz/c/c99/n1256.html#3.7.1

Стандарт подразумевает, что байт может не быть октетом. Но он с C89 разрешает отсеять странные платформы:

#include <limits.h>
#if CHAR_BIT != 8
#error "Unsupported platform"
#endif

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #450 Ответы: #456

452. Сообщение от Аноним (418), 11-Янв-26, 05:37   +/
> Спасибо, один из коментариев особенно забавен:
> inc := func(i *int) int { *i++; return i }

Ну, там есть и такой:
msg["key"] = args[i]; i++

И идею можно развивать, разрешив некоторые expressions. Это сейчас мода такая - ради безопасности и тонны boilerplate-кода не жалко. Чем больше boilerplate, тем безопаснее.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #449 Ответы: #453

453. Сообщение от Аноним (418), 11-Янв-26, 05:50   +/
> Это сейчас мода такая

И представьте, что вы новый язык придумываете. Если каждое "мне лень" заменить на "это небезопасно", вас так зауважают.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #452

454. Сообщение от Аноним (-), 11-Янв-26, 07:22   +/
> + за Вавилон-5. В условиях ограниченных ресурсов (каждый байт за счету) такое
> отношение к переполнениям буфера имело место быть... но в современных условиях
> такое уже недопустимо.

Тогда червь Морриса еще не показал в чем прикол. И это рассматривалось как дурной способ сооьщить о факапе в данных. А оказывается при креативном подходе программу можно не толко уронить. Впрочем даже и уронить в нужном месте в нужное время пару программ - так то вполне успешно бывает :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #285

455. Сообщение от Аноним (418), 11-Янв-26, 07:22   +/
> В исходном сообщении написан конкретный код, с чего бы компилятору там какие
> то множители подбирать!?

С того, что остальные понимают, что такое "язык высокого уровня", а ты нет. Сишный комитет ещё 40 лет назад говорил, что у него везде as if principle (и abstract machine), чтобы у компилятора был простор для оптимизаций.

Как ты собираешься вручную оптимизировать случай, когда знаменатель - макроконстанта (как минимум) или он станет известен на этапе компиляции только после инлайнинга (как максимум)?

Если человек умеет подбирать разложения с учётом возможностей конкретного процессора (размеры регистров, стоимость инструкций), он пишет компиляторы. Если это делать вообще, то это просто логично помещать в компиляторы, чтобы два раза не вставать и иметь удобный интерфейс (`-Os` и деление опять деление).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #435

456. Сообщение от Аноним (-), 11-Янв-26, 07:30   +/
> 3.7.1. character 〈concrete〉 - single-byte character - bit representation that
> fits in a byte.

И откуда тут следует что fits == represented as?

> #if CHAR_BIT != 8
> #error "Unsupported platform"
> #endif

Да, я именно про это. То что в char именно 8 битов - вообще совсем ниоткуда не следует. Насколько мы готовы называть байтом нечто не состоящее из 8 битов - можно поспорить. По состоянию на сейчас байтом обычно считают нечто состоящее из 8 битов а если битов иное количество - это скорее называют как "word" (machine word).

А чтобы байтом назвали нечто не 8-битное - ужасная экзотика на данный момент.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #451 Ответы: #461

457. Сообщение от Аноним (-), 11-Янв-26, 07:33   +/
> Первые 2 - в сегменте данных, не на стеке

В общем случае это вообще ниоткуда не следует. Стандарты си вообще ничего не говорят ни про какие stack, heap или что там у кого.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #384

458. Сообщение от Аноним (458), 11-Янв-26, 07:37   +/
> Причем тут Си? ML - это развитие типизированного лямбда исчисления.

Т.е. академического брейнфака для их игрищ ума - страшно далеких от того как софт применяется в этом мире на практике. Ну это и использует - полтора извращенца.

А с точки зрения майнтенанса и эксплуатации это воообще п...ц ибо в такой код въедет полтора профессора на всю планету. Проблема в том что их на всех резко не хватает, и в итоге продакшны с всеми этими лямбдами - дают дуба. Вместе с их проектами.

> Там люди в первую очерель решали математические задачи. И каким образом go относится
> ML, есди по дизайну не поощрается функциональный подход?

И правильно делает что не поощряет. Брейнфак вместо программирования - это очень сомнительное достоинство. Ведущее к кончине софтварного проекта.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #441 Ответы: #480

459. Сообщение от Аноним (458), 11-Янв-26, 07:38   –1 +/
> UB для систем реального времени точно так же противопоказано, как и паника.

Я б посмотрел как вы бы ющали ядро падающее в панику если ему памяти не хватило :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #403

460. Сообщение от Аноним (458), 11-Янв-26, 07:42   +/
> В исходном сообщении написан конкретный код, с чего бы компилятору там какие
> то множители подбирать!?

С того что mul и div не особо быстрые операции. Заметно медленнее остальных операций регистр-регистр как правило.

Поэтому продвинутые компилеры пытаются сие оптимизнуть порой.

> Попробовать распихать по регистрам, срезать лишние операции, развернуть
> циклы - да, но подбирать множитель - это к ИИ.

Советую посмотреть как LTO например работает. Черт, там есть прувер что "вот это всегда только с этим аргументом" и мы тут вообще - выпилим 80% вашего "dead code" и еще смержим с вон тем наполовину. Оппппа? Кода на треть меньше в бинаре? И он даже быстрее? Вааау!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #435

461. Сообщение от Аноним (418), 11-Янв-26, 07:52   +/
> И откуда тут следует что fits == represented as?

Оттуда, что двоичность битов в стандарте тоже не зафиксирована:
> 3.5. bit unit of data storage in the execution environment large enough to hold an object that may have one of two values

В троичную ячейку помещается объект, имеющий одно или два значения? Да. Такое намерение во фразу заложено? Нет.

То есть размер char == размер byte (его определение на несколько строчек выше), который может быть 16-битным или ещё каким.

> Насколько мы готовы называть байтом нечто не состоящее из 8 битов

Настолько, насколько ты готов писать на стандартном Си (иначе надо другой язык выбрать). Определение байта в стандарте на несколько строчек выше.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #456 Ответы: #462

462. Сообщение от Аноним (418), 11-Янв-26, 07:54   +/
* объект, способный иметь одно из двух значений
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #461

463. Сообщение от Tron is Whistling (?), 11-Янв-26, 08:29   +/
Ну так вот даже указатель не сделаешь, приходится лепить Pointer (или Object / ближайший суперкласс), и потом везде тайпкастить. Это если не хочешь все объявления сложных типов отдельно от имплементаций в одну большую портянку вытаскивать.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #414

464. Сообщение от Tron is Whistling (?), 11-Янв-26, 08:37   +/
А куда деваться, если у тебя взаимозависимые объекты.

Самый простой пример: у тебя есть аппликуха со статической не-формовой частью, и есть форма. Форме нужна аппликуха и её типы/структуры, а аппликухе надо иметь ссылки на формы в тех самых структурах.

И вот тут возникает полная опень, где все апликушные типы, ссылающиеся на форму, приходится перетаскивать в юнит формы, потому что перетаскивать класс формы в аппликуху - ещё более тупо. В итоге рушится вся семантика разделения, все типы оказываются скомканы в одном юните формы, хотя имплементация идёт только в апликухе.

И это только самый простой пример. Как только юнитов становится сильно больше - начинается веселье с взаимными зависимостями. Короче если у тебя организация приложения не строго иерархична - то ты приплыл.

В последнее время правда мне надоело, и я просто леплю внуть структур тупой Object/Pointer с названием и комментарием, позволяющими понять, что оно такое должно быть по классу на самом деле. И далее везде по всему коду тайпкасты на каждом обращении. Ловить ошибки в этом деле - то ещё приключение, но по крайней мере не надо запихивать все структуры с перекрёстными зависимостями в один юнит.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #409 Ответы: #486

465. Сообщение от Tron is Whistling (?), 11-Янв-26, 08:52   +/
Вот тупо у меня в юните висит

TXXXWindowList = specialize TDictionary<String, TForm>; // TForm => TXXXForm
TXXXWindowPair = specialize TPair<String, TForm>; // TForm => TXXXForm
...
WindowRegistry: TXXXWindowList; // id-based registry of TXXXForm

Вообще в этом реестре хранятся окна типа TXXXForm, а не TForm.

Вся основная имплементация для TXXXWindowList у меня в этом юните. Т.е. логично эти типы иметь в нём, подключив в interface TXXXForm.

Но мне при этом в юните TXXXForm надо иметь внутри формы TXXXWindowPair, который возвращается из первого юнита, т.е. референс на некую другую TXXXForm, и я не могу перенести всё в implementation, потому что референсы получаются в одних вызовах, а используются другими - и специфично уничтожаются при уничтожении форм - например с обрывом связанных тредов. Каждый раз искать целевую форму по её String на каждый вызов я там не могу - слишком накладно.

В итоге паскакаль впадает в ступор и не даёт создать циклическое включение юнитов в interface. Поэтому вместо TXXXForm в List/Pair пришлось нагородить TForm, и дальше везде костылить TXXXForm(SomeForm).SomeProp ... такие дела.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #409 Ответы: #466

466. Сообщение от Tron is Whistling (?), 11-Янв-26, 08:55   +/
TXXXForm(SomeFormPair.Value).SomeProp - если точнее
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #465

467. Сообщение от Tron is Whistling (?), 11-Янв-26, 08:57   +/
Да блин, ну в данном случае мне просто плевать, что оно будет в 10 раз дольше компилиться - у меня в коде тысячи блд тайпкастов из-за этого, а словить ошибку с тайпкастом - делать нечего.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #401

468. Сообщение от Tron is Whistling (?), 11-Янв-26, 09:15   +/
Противопоказано, но далеко не всегда фатально.

Из реальной жизни история.

Вот есть у меня плата большого сложного сетевого шкафчика. Там допустим несколько NPU, и на них крутится софт, который при определённом "UB" испортит некие _данные_ соседнего пакета в том же самом flowchain раз в столетие, и эта ошибка ещё не обнаружена.

И тут юзер начинает слать какие-то пакеты, которые эту ошибку триггерят - мне неведомо, что он там шлёт, и мне абсолютно наплевать, что он этим самым испортит свои собственные данные собственного потока - да, юзер будет недоволен, и возможно даже прилетит bug report, по которому эту ошибку начнут искать у вендора. Но железка будет работать.

Если у тебя вместо этого будет паника - упадёт весь NPU - все N 100-гигабитных портов, на этом NPU висящих. На которых таких юзеров - тысячи. И будет переинициализирован. Это минута-полторы стояка для всех этих юзеров, пересчёт BGP по всей сети, пересчёт OSPF по всей сети, обрыв состояний всех треков на портах за NPU, обрыв BFD на портах за NPU, и т.п. Дальше NPU поднимется - и снова получит этот странный бажный трафик - и снова упадёт.  Но и это ещё не всё. В сети происходит рероутинг. Источники трафика многоногие, и трафик пойдёт другим путём, где налетит на точно такой же NPU с другим портом - и положит этот NPU - уже на другом роутере. В итоге упадёт ещё один NPU и ещё один путь трафика.

Короче говоря, твоя паника положит мне полсети очень надолго, и заставит в этом бардаке искать источник странного трафика, выкладывая пачку юзеров за пачкой юзеров, получая при этом кучу жалоб и убытков - в т.ч. для юзеров.

И всё это будет продолжаться, пока саппорт вендора наконец не проанализирует проблему и не выкатит фикс - даже с наивысшим приоритетом саппорта чудес не бывает, и занимает это более суток...

Честно - я лучше некоторую долю UB допущу, чем вот такое вот.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #403 Ответы: #469

469. Сообщение от Tron is Whistling (?), 11-Янв-26, 09:19   +/
Как эта история развивалась? Первый "фикс" просто отключал падающий assert - портит - и хрен с ним портит. Но этот хотфикс выкатывали полутора суток. Поиск реального фикса занял две недели.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #468

470. Сообщение от Tron is Whistling (?), 11-Янв-26, 09:34   +/
Боюсь что в его случае он воспользуется советом LLM воспользоваться каким-нибудь облачком, и безопастно решит проблему через какой-нибудь reqwest. А потом пойдёт на мороз, потому что гифки были конфиденциальные, и в облака их грузить было нельзя. Даже безопастно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #123

471. Сообщение от Tron is Whistling (?), 11-Янв-26, 09:39   +/
А в чём проблема-то? Обыкновенное деление с бинарными сдвигами. Нет там 64-битных типов ещё, поэтому реализовали почти так же, как на асме бы было без DIV, но переносимо.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #233 Ответы: #477

472. Сообщение от Аноним (472), 11-Янв-26, 10:52   +/
> Но если у нас нет u64 в языке, то мы даже вручную
> переносимо это не повторим. i386 умеет делать u32*u32=u64, а сишка нет.

Это как? uint64_t кто-то стырил?


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #388 Ответы: #476

473. Сообщение от Аноним (91), 11-Янв-26, 11:39   +/
Подозреваю, в коде сабжа goto используется потому что не просто переписали на C, а перевели из асма напрямую, без перетряхивания архитектуры. Правильнее назвать наверно было бы конвертацией. Ну и мышление у людей тогда было асм-направленное.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #425 Ответы: #474

474. Сообщение от Мимо проскочил (?), 11-Янв-26, 11:51   +/
В приведенном коде переходы используются только для перехода к успеху/неуспеху в самом конце функции. Такие же идиомы встречаются повсеместно и в гораздо более поздненаписанном коде, поэтому было интересно спросить.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #473

476. Сообщение от Аноним (418), 11-Янв-26, 13:50   +/
>> ... ещё не вышел C99 ... если у нас нет u64 в языке ...
> Это как? uint64_t кто-то стырил?

Если для тебя время течёт в обратном направлении, то правильнее будет сказать "стырят". Примерно через 30 лет.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #472

477. Сообщение от Аноним (418), 11-Янв-26, 14:22   +/
> Обыкновенное деление

Обыкновенное деление - это когда рисуешь уголок и начинаешь механически повторять забытые действия. Это же надо постараться, чтобы понять, что мы так же делим.

(в худшем случае тег ['code'] ниже будет работать только в окне ответа ("Ответить"))

123456 / 28 = ? + ?/28
divrem(12345,28) = {?;?}
digitsCount(123456) = 6; 6 steps
0.123456 / 28 = 123456 / 28 * 10^-6

                             remainder   next
                               check     step
---------------------------+-----------+------
0)    0.123456/28          |   begin   | x10
1)    1.234560/28          |   1 <  28 | x10
2)   12.345600/28          |  12 <  28 | x10
3)  123.456000/28          | 123 >= 28 |  .
    -28x?                  |     .     |  .
    -28x4   divrem(123,28) |     .     |  .
   -112       = {4;11}     |     .     |  .
   = 11                    |     .     |  .
     11.456000/28 + 4      | (11 < 28) | x10
4)  114.560000/28 + 40     | 114 >  28 |  .
    -28x?                  |     .     |  .
    -28x4   divrem(114,28) |     .     |  .
   -112       = {4;2}      |     .     |  .
   =  2                    |     .     |  .
      2.560000/28 + 44     |  (2 < 28) | x10
5)   25.600000/28 + 440    |  25 <  28 | x10
6)  256.000000/28 + 4400   | 256 >= 28 |  .
    -28x?                  |     .     |  .
    -28x9   divrem(256,28) |     .     |  .
   -252       = {9;4}      |     .     |  .
   =  4                    |     .     |  .
      4.000000/28 + 4409   |  (4 < 28) | end
    
123456 / 28 = 4409 + 4/28


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #471

478. Сообщение от Аноним (478), 11-Янв-26, 16:39   +/
> с чего бы компилятору там какие то множители подбирать!?

А с чего этим должен заниматься программист? Всё что возможно автоматизировать надо автоматизировать. Подбор этого множителя выполняется алгоритмически. Деление на константу попадается часто и деление по жизни тормозная операция. То есть вещь востребованная и рутинная, то есть не требующая интеллекта. Значит это задача компилятора.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #407

479. Сообщение от Аноним (478), 11-Янв-26, 16:47   +/
Ты ничего не понимаешь в колбасных обрезках. Такие метки очень удобны. Они используются на локальном уровне, для организации циклов и ветвлений, как правило они перед глазами полностью и место декларации и место (как правило одно место) использования. Вот как в процитированном куске.

А насчёт "вставить ещё одну" -- это вряд ли. Это ассемблер а не C/C++ или спасибоже хруст. Если ты над асм кодом проводишь такие рефакторы, что у тебя метки поехали, то вероятно ты делаешь что-то не так, и твой код должен быть на высокоуровневом языке с ассемблерными вставками. А даже если твой подход уместен, то ты должен хорошо понимать что происходит, прежде чем что-то менять в асм коде, и выверять это строчка за строчкой, на фоне этого перенумерация меток оказывается полезной активностью, которая помогает держать фокус внимания на выверке кода, не срезая при этом углов так, как нейросети (белковые или кремниевые) любят делать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #439

480. Сообщение от Кошкажена (?), 11-Янв-26, 17:29   +2 +/
>> Причем тут Си? ML - это развитие типизированного лямбда исчисления.
> Т.е. академического брейнфака для их игрищ ума - страшно далеких от того
> как софт применяется в этом мире на практике. Ну это и
> использует - полтора извращенца.
> А с точки зрения майнтенанса и эксплуатации это воообще п...ц ибо в
> такой код въедет полтора профессора на всю планету. Проблема в том
> что их на всех резко не хватает, и в итоге продакшны
> с всеми этими лямбдами - дают дуба. Вместе с их проектами.

Почитай про JaneStreet, MirageOS (который ипользуется в Docker) или про Rocq. Также OCaml много где использовался в fb: flow, pyre-check.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #458

481. Сообщение от Аноним (-), 11-Янв-26, 17:30   +/
> А, да, точно, "виновата" строчка unsafe где буквально происходит обычное удаление элемента из списка, а не та safe часть кода, которая отпустила лок на лист, продолжая работать с данными из него

Эмм... да. Та часть кода которая отпустила лок на лист не нарушила гарантий сафети. А вот та строчка которая вдруг расчехлила unsafe не проверив предварительно всех необходимых кондиций для того, чтобы этот unsafe был бы sane кодом, вот она виновата. Пока ты не трогаешь unsafe все нарушения гарантий сафети -- не твоя вина. Это вина того кода, который предоставил тебе API и пометил его как safe, хотя он на самом деле unsafe. Но как только ты используешь unsafe, вся ответственность на тебе. Ключевое слово unsafe можно трактовать как утверждение программиста о safety кода, мол, он сам всё проверил и говорит что тут всё ок, ничего плохого случится не может.

Если ты ищешь "виноватых" то искать их надо среди людей: строчка кода не может быть виноватой. А если так, то вероятно тот, кто написал safe часть кода и тот кто написал этот unsafe -- это одно и то же лицо. Я даже могу предположить как у него мысль в голове текла (возможный ответ на твоё "зачем создавать локальную копию"): он думал что если забрать список на стек вместе с овнершипом, то овнершип позволит ему творить со списком что угодно. Но это не тот случай, mutable^shared не выполняется. И именно поэтому remove -- это unsafe операция.

Если же говоря о "виноватой строчке unsafe" ты на самом деле хочешь поговорить о причинах, а не о вине, просто русская язык моя твоя ни панимай, то это бессмысленный разговор. В отрыве от процесса написания кода любая строчка, изменение которой может устранить этот баг, будет причиной этого бага по-определению причины. Всегда, для любого следствия, есть мириады причин, и выбор любой одной всегда выглядит субъективным произволом. В это можно привнести объективности, и если тебе интересно как, то попробуй погуглить по словам root cause, proximate cause. Википедию можно почитать напротив Proximate and Ultimate Causation и Causation in English Law. Обрати внимание на произвольность выбора причин, попробуй выявить критерий выбора граней ситуации для обозначения их словом "причина". Если у тебя будет оставаться желание к саморазвитию, когда ты это одолеешь, то попробуй подумать почему физика не любит говорить о причинах и следствиях. Там есть законы, типа закона гравитации, но если ты почитаешь учебники физики, там на удивление мало (или вообще нет) вхождений слова "причина". Но если ты послушаешь инженеров, то у тех причин очень много.

Если провести аналогию между кодом/программистом и реальностью/инженером, то в коде как и в реальности нет причин и нет следствий, а вот в деятельности программистов и инженеров причины вдруг появляются. Забавно да?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #242

482. Сообщение от Кошкажена (?), 11-Янв-26, 17:38   –1 +/
> Мы этот старый код и обсуждаем, если ты забыл. К чему ты вообще приплел код из своей системы?

Элементарно, Ватсон: сейчас весь рабочий код нем.

>> А потом разработичк сказал что-то..
> Намекаешь на то, что Дуглас Макилрой соврал?

Намекаю, что надо опросить более одного человека. Бывает так, что один говорит "они все были дураками". Это однобокая точка зрения. Сказать можно, проверить ты никак не можешь.

>>>> Веришь словам, которые не понятно как проверить.
>>> Разуй глаза, у тебя код под носом.
>> Для такого нужно уметь анализировать.
> Ты уже наанализировал, спасибо. Анализ уровня "вы все врети!".

А вот и нет. У меня недостаточно данных для анализа. А вот растовщики верят всему, что написано на заборе.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #446 Ответы: #483

483. Сообщение от Аноним (483), 11-Янв-26, 20:29   –1 +/
>> Мы этот старый код и обсуждаем, если ты забыл. К чему ты вообще приплел код из своей системы?
> Элементарно, Ватсон: сейчас весь рабочий код нем

Другими словами, твой код не имеет никакого отношения к обсуждаемому коду из Unix 4 1973 года.

>>> А потом разработичк сказал что-то..
>> Намекаешь на то, что Дуглас Макилрой соврал?
> Намекаю, что надо опросить более одного человека. Бывает так, что один говорит "они все были дураками".

Что ж ты так о дедах-первопроходцах - "были дураками"? Ведь Дуглас даже приблизительно не намекал, что они были "дураками", а наоборот: заявлял, что решение было взвешенным, учитывая время и обстоятельства.

> Это однобокая точка зрения. Сказать можно, проверить ты никак не можешь.

Я так и не понял как, по-твоему, могла бы звучать противоположная Дугласу точка зрения (от условного Кена Томпсона)? Типа "у нас бали высочайшие стандарты, а за буфер мы случайно вылезли"?

У тебя просто стадия отрицания. Это пройдет.

>> Ты уже наанализировал, спасибо. Анализ уровня "вы все врети!".
> А вот и нет. У меня недостаточно данных для анализа.

Только ты почему-то тактично о них умалчиваешь. 😂

> А вот растовщики верят всему, что написано на заборе

Так и запишем: слова Дугласа Макилроя - это "написано на заборе"  А слова опеннетного непойми кого под ником "Кошкажена" - объективная истина.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #482

484. Сообщение от Ananas Wiser (?), 11-Янв-26, 21:44   +/
Спасибо, на Яндекс книгах даже есть, будет интересно!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

485. Сообщение от Аноним (485), 12-Янв-26, 00:18   +/
Там есть гораздо хуже ошибка :)

badpw:
    printf("bad password file\n");
ok:
    setuid(0);
...

Ответить | Правка | Наверх | Cообщить модератору

486. Сообщение от randomize (?), 12-Янв-26, 02:42   +/
> А куда деваться, если у тебя взаимозависимые объекты.

https://ru.wikipedia.org/wiki/Model-View-Controller

Лично я разделяю код на gui, логику и контроллер. Гуй не знает про основную логику, логика - про Гуй. Контроллер знает про них всех.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #464 Ответы: #490, #491

487. Сообщение от Аноним (487), 12-Янв-26, 03:43   +/
то ли дело раст
Ответить | Правка | Наверх | Cообщить модератору

488. Сообщение от КО (?), 12-Янв-26, 09:35   +/
>И что? Если бы в код добавили проверку на выход из буфера, то что, программа бы сломалась?

А как ты думаешь почему параметры компиляторов включающие проверку выхода за границы массива времен лохматых по умолчанию были выключены?
Боролись за производительность, ибо ее не хватало.
Вот и не было привычки его включать.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #234

489. Сообщение от КО (?), 12-Янв-26, 09:44   +/
>Какого года червь Морриса?

Через 15 лет после появился. Выше же написали, что до него никто и не задумывался, что переполнением можно воспользоваться.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #69

490. Сообщение от Tron is Whistling (?), 12-Янв-26, 10:10   +/
Не весь код - вебня.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #486

491. Сообщение от Tron is Whistling (?), 12-Янв-26, 10:11   +/
Там понимаешь в чём дело, если у меня пойти и разделить дальше вот просто ради этих соплей - юнитов станет в два раза больше, и код станет толще процентов на 20-30, причём эти 20-30% будут просто врапперами к коду из логики. Ага. Вызов в вызов.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #486

492. Сообщение от Аноним (492), 12-Янв-26, 10:22   +/
А что за window manager на скриншоте?
Ответить | Правка | Наверх | Cообщить модератору

493. Сообщение от Sm0ke85 (ok), 12-Янв-26, 10:26   +/
>Вот и ответ на вопрос "сколько строк на СИ достаточно чтобы написать CVE")))

Глупость пишешь, тогда "машинки" были не такие шустрые и интернетов не было с ИИ-агентами, поэтому ориентировались на локальное использование не обезьяной с гранатой, так что все отлично и их дело живо по сей день с учетом развития технологий...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2026 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру