The OpenNET Project / Index page

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



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

Оглавление

Локальная уязвимость в ядре Linux, эксплуатируемая через nftables , opennews (??), 26-Дек-23, (0) [смотреть все]

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


82. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +3 +/
Сообщение от Аноним (82), 26-Дек-23, 15:47 
Вот так, добрых полвека прошло, а проклятие Дейкстры владеет умами.

Вбитая со студенчества инстинктивная неприязнь к goto — это уродливая деформация, точно так же ухудшающая код, как и полное отсутствие структуры (бывшее нормой во времена Дейкстры). Каждая строчка кода должна быть обдумана и оправдана. Даже goto. Если такой подход позволяет реализовать что–либо эффективнее, проще и лаконичнее — правильным будет использовать goto, а не городить многоэтажные баррикады из скобочек и макросов, ссылаясь на затрёпанную догму: «общеизвестно (sic!) что goto — дурной тон».


> применение статических анализаторов стало еще сложнее

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

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

103. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  –1 +/
Сообщение от анонин (?), 26-Дек-23, 16:57 
Керниган и Ритчи в книге Kernighan & Ritchie 1988 глава 3.8 Goto and Labels пишут следущее

C provides the infinitely-abusable goto statement, and labels to branch to. Formally, the goto
statement is never necessary, and in practice it is almost always easy to write code without it.
We have not used goto in this book.

Приводят один пример где его можно использовать, кстати таки цикл, но добавляют "This organization is handy if the error-handling code is non-trivial, and if errors can occur in several places."

А резуюмируют это "it does seem that goto statements should be used rarely, if at all"

Так что даже создатели СИ считают, что goto это плохо.

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

127. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (-), 26-Дек-23, 18:08 
> Так что даже создатели СИ считают, что goto это плохо.

Но тем не менее добавили его в C. Наговорив всяких слов, которые звучат больше как извинение перед Дейкстрой, чем как запрет goto во всех случаях, кроме тех когда без него не обойтись.

Без goto _всегда_ можно обойтись, если поставить перед собой такую цель. И Керниган с Ритчи об этом знали. Но добавили goto в C, и пробормотали что-то вроде "ну goto типа плохо, но типа удобно иногда".

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

135. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от фнон (?), 26-Дек-23, 18:42 
Именно!
Они даже написали пример как из

for (i = 0; i < n; i++)
   for (j = 0; j < m; j++)
      if (a[i] == b[j])
      goto found;
/* didn't find any common element */
...
found:
/* got one: a[i] == b[j] */

можно сделать


found = 0;
for (i = 0; i < n && !found; i++)
   for (j = 0; j < m && !found; j++)
      if (a[i] == b[j])
      found = 1;
if (found)
/* got one: a[i-1] == b[j-1] */
...
else
/* didn't find any common element */

Выше написали несколько вариантов начиная от defer, заканчивая nested функциями.
То что они оставили гото в С - может это была необходимость, чтобы фанатики не воняли.
А может уже написанный код перестал бы работать.
А может это ошибка ценой в лямы долларов, как один сэкономленный байт в null-terminated string.

Но они однозначно осуждают его использование, а не "пробормотали что-то вроде "ну goto типа плохо""

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

144. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +5 +/
Сообщение от anonymous (??), 26-Дек-23, 18:55 
Что и требовалось доказать без goto получилась дурацкая лапша с флажочками. Зато гоутофобы довольны.
Ответить | Правка | Наверх | Cообщить модератору

149. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Анонимусс (?), 26-Дек-23, 19:06 
Ну так запиши Керниган и Ритчи в Готофобы.
Ты наверняка умнее и лучше разбираешься в тонкостях СИ, не то что эти дилетанты.
Ответить | Правка | Наверх | Cообщить модератору

182. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Tron is Whistling (?), 26-Дек-23, 22:56 
Вы можете как угодно лепить.
Другие будут делать, как удобнее им.
Не нравится - не пользуйтесь :)
Ответить | Правка | Наверх | Cообщить модератору

202. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (-), 27-Дек-23, 00:49 
Полностью согласен, тут я могу просто бухтеть или скрипеть зубами, в зависиммости от того насколько ужасный овнокод в ядре снова делает уязвимость.

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

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

210. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (210), 27-Дек-23, 02:30 
> насколько ужасный овнокод в ядре снова делает уязвимость.
> через пару версий ядра, по той же самой причине вам понадобится раст для его сборки

По какой "той же самой"? По "ужасный овнокод в ядре снова делает уязвимость" но теперь уже на расте?

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

222. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Tron is Whistling (?), 27-Дек-23, 09:58 
Если такое каким-то образом произойдёт - мне уже будет почти фиолетово, потому что в планах будет полный перенос сервиса на винду :D
Ответить | Правка | К родителю #202 | Наверх | Cообщить модератору

197. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Dont Ask (?), 27-Дек-23, 00:01 
Ну да, ещё goto прерывает циклы СРАЗУ а не ждёт, пока ты ВСЁ просмотришь. А вдруг там не просто 2*3 а что то долгое, файлы на сети перебирать сто тыщ о как красиво, зато без goto.

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

199. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Dont Ask (?), 27-Дек-23, 00:04 
Туплю, в этом примере прервётся сразу :facepalm:
Ответить | Правка | Наверх | Cообщить модератору

207. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (210), 27-Дек-23, 02:15 
Ах ты ж! Я думал, он троллит, а он СЕРЬЁЗНО предлагает избавиться от goto ТАКИМ способом! Тогда понятно, почему нормальные программисты стараются вести себя с готофобами спокойно, дружелюбно, во всём с ними соглашаются, но к коду не подпускают.
Ответить | Правка | К родителю #144 | Наверх | Cообщить модератору

181. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +2 +/
Сообщение от Tron is Whistling (?), 26-Дек-23, 22:56 
И вот зачем всё это извращение, когда достаточно просто goto и метки?
Ответить | Правка | К родителю #135 | Наверх | Cообщить модератору

213. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (3), 27-Дек-23, 02:43 
Аргумент уровня "зачем вообще делать какой-то cleanup, если достаточно простого ((void(*)(void))0)() (после которого cleanup не понадобится, инфа 100%)"
Ответить | Правка | Наверх | Cообщить модератору

223. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Tron is Whistling (?), 27-Дек-23, 10:00 
Мне не платят за количество строк кода, поэтому делать из одного goto портянку мне лениво.
Ответить | Правка | Наверх | Cообщить модератору

232. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (-), 27-Дек-23, 12:44 
> Мне не платят за количество строк кода,

Думаю за качественный и поддерживаемый код тебе тоже не платят)

> поэтому делать из одного goto портянку мне лениво.

... и так подумал каждый разработчик проекта.
А потом "а почему у нас макаронная фабрика вместо кода?! как это случилось? кто это сделал?"

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

233. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Tron is Whistling (?), 27-Дек-23, 14:43 
Почти угадал. Мне платят за то, чтобы я определял, как всё это делается (архитектор, ога). Т.е. сие видение транспонируется на то, что в итоге делается другими людьми. И чтобы код в принципе был поддерживаемый не только вот этой вот текущей командой, но и при возникшей суровой необходимости - вообще кем-то в одну мордочку, без эксцессов. Периодически сам берусь за код, софт, железо и т.п., в основном в "тонких местах", чтобы мнение иметь, ну и когда народ в силу изначально заложенных ложных концептов "гото плохо" и т.п. - не осиляет.
Ответить | Правка | Наверх | Cообщить модератору

237. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (-), 27-Дек-23, 18:11 
О, это уже интереснее.
Если ты работаешь с тем "что в итоге делается другими людьми" то неужели тебя так сильно парит как будет реализована одна из функций через гото или через if (flag) ?
Работать оно будет практически одинаково.

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

Думаю ты как архитектор сталкивался тем что иногда меняются требования, и части проекта приходится перепиливать. Хотя я не уверен бывает ли такое в "FreePBX и обвязки до управления роутерам". Может у вас планирование лучше.
Так вот, если приходится перепиливать проект, то с чем легче разобраться - с мелкими функциями принятыми как стандарт для проекта (я не знаю на чем вы пишите и доступны ли вам всякие defer/nested) или в множестве goto?
Я сталкиваля с чудовищным кодом на гото, с функциями разобраться было на порядок легче.
Возможно твой опыт противоположный моему, что абсолютно нормально.
Разница может быть в том, что тебя зовут когда "все совсем плохо", а мне доводилось подчищать за другими очень часто)

> Поэтому видение от "code only" может отличаться сильно, приходится жить в реальном мире, который идеализма не прощает.

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

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

234. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Tron is Whistling (?), 27-Дек-23, 14:46 
Но да, есть момент - у нас не чистый проект из чистого кода, а в силу характера деятельности - связь кода, стороннего железа, стороннего софта. По целому множеству профилей и проектов. Не эмбедовка, нет. От FreePBX и обвязки до управления роутерами. Поэтому видение от "code only" может отличаться сильно, приходится жить в реальном мире, который идеализма не прощает.
Ответить | Правка | К родителю #232 | Наверх | Cообщить модератору

180. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Tron is Whistling (?), 26-Дек-23, 22:55 
Единственный недостаток гото - неочевидная местами раскрутка стека.
Но если оно всё в пределах одного контекста - совершенно беспроблемная вещь.
Другое дело, что да, для снежинок уже слишком сложно.
Ответить | Правка | К родителю #127 | Наверх | Cообщить модератору

203. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +1 +/
Сообщение от Аноним (-), 27-Дек-23, 00:51 
Бедные снежинки, то ли дело диды, наделали столько CVE, что выгребать будем еще лет 10.

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

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

224. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +1 +/
Сообщение от Tron is Whistling (?), 27-Дек-23, 10:01 
Да, диды CVE наделали. Потому что хоть что-то делали, да и npm и лефтпадов тоже не было.
А вот от снежинок я пока ни одной вменяемой софтины не увидел, всё больше как-то дедовские монстры работают.
Ответить | Правка | Наверх | Cообщить модератору

134. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (134), 26-Дек-23, 18:41 
Можно например и без switch обойтись, а еще можно на Brainfack писать.
Ответить | Правка | К родителю #103 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру