The OpenNET Project / Index page

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



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

Оглавление

Удалённо эксплуатируемая язвимость в драйвере NVMe-oF/TCP из состава ядра Linux, opennews (??), 16-Окт-23, (0) [смотреть все]

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


27. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +2 +/
Сообщение от Аноним (24), 16-Окт-23, 12:41 
> За использование goto просто так, без реальной причины надо бить по рукам.

Ты походу не то что ни одного модуля для ядра не написал, ты походу вообще с эмбедовкой никогда не работал.

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

36. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +2 +/
Сообщение от Аноним (15), 16-Окт-23, 12:54 
Что тебе не ясно во фразе "просто так, без реальной причины"?
Из кода гото удалили, и... мир не рухнул, код не перестал работать, а наоборот стал лучше.
Значит ли это, что в данном случае гото не было жизненно необходимо? Думаю да
Ответить | Правка | Наверх | Cообщить модератору

41. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  –1 +/
Сообщение от OpenEcho (?), 16-Окт-23, 13:01 
> Значит ли это, что в данном случае гото не было жизненно необходимо? Думаю да

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

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

48. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +1 +/
Сообщение от Аноним (15), 16-Окт-23, 13:09 
Все возможно.
Наверное те гореписаки, т.е, простите, уважаемые пограммисты системщики этих самых унтеверситетов не заканчивали, и им профессора не рассказывали о том что "после выделения памяти, ее нужно очищать, желательно всего один раз".
Вот так и живем.
Ответить | Правка | Наверх | Cообщить модератору

52. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (15), 16-Окт-23, 13:18 
Чувак, посмотр на мисру (тот самый С котрый ипользуется для надежности)
а именно на правило
15.1 которое объясняется "Unconstrained use of goto can lead to programs that are unstructured and extremely difficult to understand"

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

68. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (68), 16-Окт-23, 15:11 
Замени goto на что-то другое, умник. goto + label - это просто прыжок в конкретный кусок кода (и, внимание) внутри одной функции. Это не longjmp. В этом случае goto выполняет функцию defer, чтобы сразу прыгнуть в один и тот же кусок кода, который и так бы исполнился в конце или при другом условии внутри той же самой функции, и программа просто продолжает исполнятся с места, где определён label.
goto убрали в патче, потому что этот defer вообще не нужен внутри функции, она по задумке теперь должна просто return делать. Прыгать в этом случае в label смысла нету никакого.
Почитайте исходники, попробуйте написать что-то, что не превращается в 10 вложенных друг в друга циклов и if else стейтментов, после этого приплетайте правила, которые кто-то придумал и выложил в интернет. В Си есть только одно правило - стандарт Си.
Ответить | Правка | Наверх | Cообщить модератору

81. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (82), 16-Окт-23, 16:05 
> Почитайте исходники, попробуйте написать что-то, что не превращается в 10 вложенных друг в друга циклов и if else стейтментов, после этого приплетайте правила, которые кто-то придумал и выложил в интерне

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

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

118. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Серб (ok), 16-Окт-23, 18:46 
Почитай хотя бы Прешерн "Язык С. Мастерство программирования. Принципы, практики и паттерны".

Глава 1. Обработка ошибок.

Подраздел: "Переход к обработке ошибки".

У него там есть замечание, что при работе в команде могут попастся неадекваты и тогда, возможно, придётся изворачиваться. Ну и варианты изворотов приводит.

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

130. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +1 +/
Сообщение от Аноним (15), 16-Окт-23, 22:45 
Да, и он приводит вполне адекватные решения, например "Поместите инициализацию и очистку в разные функции, как это делается в конструкторах и деструкторах в объектно ориентированном программировании." и примеры проектов где это применяется OpenSSL, OpenWrt, Git.

И даже говорит про производительность:
"Вместо одной функции мы теперь имеем несколько. Это может снизить производительность, но обычно снижение настолько незначительно, что в большинстве приложений им можно пренебречь."

Т.е пока не сделаны замеры профайлера, то делать ранние оптимизации бесполезно.

Более того финальный код, который "Оцените, насколько элегантнее стал код по сравнению с первоначальной версией." вообще не содержит goto.

Впрочем, я сомневаюсь что писатели этого драйвера, читали такие книги)

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

155. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (155), 17-Окт-23, 21:55 
> Впрочем, я сомневаюсь что писатели этого драйвера, читали такие книги)

Очевидно, что ты высокого мнения о себе.

В том варианте, что ты привел есть существенный недостаток. Это хорошо работает пока ресурсов мало и разработчик один.

Как только выделение ресурсов и их освобождение делают в разных местах - обязательно кто-нибудь, когда-нибудь забудет сделать обратную операцию.

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

139. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Хейтер С (?), 17-Окт-23, 09:34 
Rule 15.2 The goto statement shall jump to a label declared later in the same
function

И? MISRA разрешает goto вперед.

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

140. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (15), 17-Окт-23, 09:48 
Это для тех кто не осилил пункт 15.1)

Там есть еще 15.3 и 15.4, но и в них есть ремарка
Rationale - Unconstrained use of goto can lead to programs that are unstructured and extremely
difficult to understand.
Что собственно и видим - получили удалённо эксплуатируемую CVE на ровном месте.

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

141. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Хейтер С (?), 17-Окт-23, 09:59 
CVE не из-за goto. В данном конкретном случае неиспользование goto ничего бы не поменяло.
Ответить | Правка | Наверх | Cообщить модератору

144. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (15), 17-Окт-23, 10:58 
CVE из-за наплевательского отношения к работе с памятью и спагетти-кода
В хаосе трудно найти какие-то проблемы.
Ответить | Правка | Наверх | Cообщить модератору

149. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Хейтер С (?), 17-Окт-23, 16:27 
Суть в том, что код на С без goto для обработки ошибок хуже, RAII-то нет и приходится обмазываться флагами состояний, освобождать ресурсы перед каждым return'ом итп. Да, С хреновый ЯП, но нет, это не спагетти-код.
Ответить | Правка | Наверх | Cообщить модератору

53. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (15), 16-Окт-23, 13:22 
Rule.15.1 "The goto statement should not be used"
Ответить | Правка | К родителю #48 | Наверх | Cообщить модератору

91. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (91), 16-Окт-23, 17:01 
goto, jmp - ну ты, блд, сопоставил. Это разный уровень абстракций. Компилятор с языков высокого уровня однозначно нагенерит кучу jmp даже там, где goto и а помине нет. Ну не может машинный код в фигурные скобочки или begin/end.
Ответить | Правка | К родителю #41 | Наверх | Cообщить модератору

173. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (171), 20-Окт-23, 15:07 
> Возьми дизассемблер и посмотри как много jmp в реальности

Это не для глючных гомо сапиенсов jmp, а для машин. Мозг гомо сапиенса по определению постоянно ошибается, ему нужны строгие модели и много-много постоянных проверок, чтобы хотя бы снизить количество ляпов на строку. goto для человека - как граната для обезьяны, рано или поздно обязательно подорвётся.

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

131. "Удалённо эксплуатируемая уязвимость в драйвере NVMe-oF/TCP и..."  +/
Сообщение от Аноним (131), 16-Окт-23, 23:15 
А ты не заметил, что после goto там еще куски кода были?
Ответить | Правка | К родителю #36 | Наверх | Cообщить модератору

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

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




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

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