The OpenNET Project / Index page

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



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

Оглавление

Mayhem - атака, искажающая биты в памяти для обхода аутентификации в sudo и OpenSSH, opennews (??), 22-Дек-23, (0) [смотреть все]

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


65. "Mayhem - атака, искажающая биты в памяти для обхода аутентиф..."  +/
Сообщение от Аноним (66), 23-Дек-23, 12:02 
> За дефайны вообще вон из профессии.

А что тогда вместо них использовать?

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

81. "Mayhem - атака, искажающая биты в памяти для обхода аутентиф..."  +/
Сообщение от Аноним (80), 23-Дек-23, 20:07 
Для числовых значений сойдёт const
Ответить | Правка | Наверх | Cообщить модератору

98. "Mayhem - атака, искажающая биты в памяти для обхода аутентиф..."  +3 +/
Сообщение от Аноним (27), 24-Дек-23, 00:20 
В C - это не тот const, который вы ищете.
Ответить | Правка | Наверх | Cообщить модератору

112. "Mayhem - атака, искажающая биты в памяти для обхода аутентиф..."  +1 +/
Сообщение от InuYasha (??), 24-Дек-23, 10:28 
> Для числовых значений сойдёт const

дада, счас адепты constexpr набигут ещё. #define в умелых руках творят добрые чудеса. :D

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

131. "Mayhem - атака, искажающая биты в памяти для обхода аутентиф..."  +1 +/
Сообщение от Аноним (131), 25-Дек-23, 05:27 
Ну, стандарты вроде той же MISRA, наверное, станут требовать constexpr в C, когда он перестанет быть слишком новым. Для C++ там есть аналогичный пунктик (16-2-2) не использовать #define для констант.

Хотя только #define и enum выражают красивую идею "подставить литерал, никогда не создавая в памяти переменную, не давая возможности сослаться на неё".

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

97. "Mayhem - атака, искажающая биты в памяти для обхода аутентиф..."  +1 +/
Сообщение от Аноним (131), 23-Дек-23, 23:36 
> А что тогда вместо них использовать?

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

Предложение использовать просто const работать не будет (ключевые слова: error, multiple definitions, external linkage, const), у static const всё равно останутся неприятные ограничения, constexpr - это C23.

Надо в принципе выработать в себе презрение к макросам - например, они с трудом читаются после разворачивания (gcc -E). Поэтому в C++ надо использовать только шаблоны - там такой возможности вообще нет (презрение к когнитивному диссонансу тоже надо выработать).

А лучше выработать презрение ко всем возможностям, касающимся compile-time. У комитета оно есть, судя по срокам вокруг __VA_OPT__, consteval, (вы находитесь здесь), std::embed (#embed), рефлексии.

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

104. "Mayhem - атака, искажающая биты в памяти для обхода аутентиф..."  +1 +/
Сообщение от Аноним (-), 24-Дек-23, 02:16 
> А лучше выработать презрение ко всем возможностям, касающимся compile-time.

И все бы это ничего - но навернувшаяся в run time с run time ошибкой управляющая фирмварь может доставить вам намного больше... седых волос... на всех частях тела... стоящих дыбом :)

...а препроцессором, внезапно, до кучи можно сделать нехилую валидацию коректности довольно много чего. И то что я сдуру 35-й бит 32-битного регистра гораздо лучше узнать при сборке проекта (да, у меня есть макро ловящее такое), чем сделать в рантайме что-то левое, или упасть с ассертом каким. Просто представь себе assertion failed в фирмвари твоего ECU на скорости 120. Как, прикольно? :)

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

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

110. "Mayhem - атака, искажающая биты в памяти для обхода аутентиф..."  +1 +/
Сообщение от Аноним (131), 24-Дек-23, 09:21 
То был сарказм на тему ограниченности compile-time возможностей и возведения препроцессора в абсолютное зло. Compile-time конкатенация строк на чистом C++ в сотню SLOC и всё такое.

> А плюсота - сама по себе сложная, жирная и непредсказуемая в плане рантайм поведения.

До раста в ядре линукса это звучало даже почти убедительно. Никто не запрещает обходиться только zero cost abstraction'ами.

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

149. "Mayhem - атака, искажающая биты в памяти для обхода аутентиф..."  +/
Сообщение от Аноним (-), 28-Дек-23, 10:48 
> То был сарказм на тему ограниченности compile-time возможностей и возведения препроцессора
> в абсолютное зло. Compile-time конкатенация строк на чистом C++ в сотню
> SLOC и всё такое.

Да вооон там заполнение массива generated (предвычесленным) контентом - на гольном си. А чо, так можно было. Препроцессор даже рекурсию умеет и "почти тюринг полный" как таковой.

Просто у него свои грабли есть - на side effects и порядке/эффекте вычислений можно и налететь. Особенно если не обкладывать козла матом^W^W макросы скобками. Впрочем делать хитрож@пые вычисления прямо в вызове функций всяко не стоит, но в макросах залететь можно сильнее.

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

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

> Никто не запрещает обходиться только zero cost abstraction'ами.

Тем не менее плюсы успешно унаследовали от сей ряд бестолковостей, включая и UB и абсолютно дурацкие типы данных навроде "int", определенных ретардами из комитета, абы как. Это стоило и стоит нам всем дохреналион багов на ровном месте. Когда оказывается что int оказывается и 16 битов - валидно. А теперь попробуйте это реально можно. Вон в атмегах можно на свое горе заказать. И все по стандарту как бы. А сколько кода при этом сдуреет?! Чуть менее чем весь?

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

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

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




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

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