The OpenNET Project / Index page

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



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

Оглавление

Переполнение буфера в Toxcore, эксплуатируемое через отправку UDP-пакета, opennews (?), 15-Дек-21, (0) [смотреть все]

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


97. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (99), 16-Дек-21, 13:01 
А зачем тут использовать макрос если можно использовать константу?
Ответить | Правка | Наверх | Cообщить модератору

111. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +2 +/
Сообщение от Аноним (158), 16-Дек-21, 14:04 
Константа - это переменная в памяти, просто компилятор ругается если изменять её. Макрос, лично для меня, в этой ситуации более напрямую выполняет свою функцию - подстановка текста. А константа может и с типами начать проблемы вызывать, или вообще не дай бог скастоваться в непонятно что.
Ответить | Правка | Наверх | Cообщить модератору

140. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  –1 +/
Сообщение от n00by (ok), 17-Дек-21, 07:54 
enum здесь чем плох?
Ответить | Правка | Наверх | Cообщить модератору

147. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (143), 17-Дек-21, 11:11 
Наверное, и constexpr тоже вариант.
Ответить | Правка | Наверх | Cообщить модератору

154. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от n00by (ok), 17-Дек-21, 12:24 
constexpr это уже Си++. Там и константы вариант:

const int maxarray = 255;
char store_char[maxarray];  // allowed in C++; not allowed in C

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

225. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (225), 02-Янв-22, 07:11 
Ты уверен?
https://godbolt.org/z/6fe6d6Gvs
Ответить | Правка | Наверх | Cообщить модератору

235. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от n00by (ok), 08-Янв-22, 14:16 
Абсолютно. Могли бы сменить версию стандарта, что бы было понятнее, что там на самом деле происходит: ISO C90 forbids array 'store_char' whose size cannot be evaluated (gcc 11.2).
Ответить | Правка | Наверх | Cообщить модератору

161. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (74), 17-Дек-21, 17:56 
> enum здесь чем плох?

Всем, в данном случае! Он вообще был создан совсем не для этого.

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

162. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от n00by (ok), 17-Дек-21, 18:14 
>> enum здесь чем плох?
> Всем, в данном случае!

Пару конкретных причин?

> Он вообще был создан совсем не для этого.

В смысле, следует ориентироваться не на текущий стандарт, а на цели Кернигана и Ритчи? Зачем-то "в реализации на PDP-11 со всеми перечисляемыми переменными оперируют так, как если бы они имели тип INT".

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

165. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (74), 18-Дек-21, 04:45 
Покажи код, а я расскажу, почему следует открутить твои @@.
Ответить | Правка | Наверх | Cообщить модератору

166. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от n00by (ok), 18-Дек-21, 08:15 
Ссылка на код приведена в новости.
Ответить | Правка | Наверх | Cообщить модератору

167. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (74), 18-Дек-21, 10:03 
Ну так и покажи, как ты enum-ом хочешь переписать эту строчку кода.
Ответить | Правка | Наверх | Cообщить модератору

168. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от n00by (ok), 18-Дек-21, 11:27 
Я хочу? Бремя доказательства утверждения "всем плох" лежит на заявителе.
Ответить | Правка | Наверх | Cообщить модератору

170. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (74), 19-Дек-21, 05:16 
Ты не петляй, не петляй.

Твоё "enum здесь чем плох?" в контексте обсуждения несёт такую смысловую нагрузку, которая подразумевает возможность использования enum-а для описания константы CRYPTO_SIZE.
Т.е., в твоём вопросе уже содержится утверждение.

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

Что ж, сделаю себе о регистранте n00by соответствующую "пометку на полях".

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

171. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от n00by (ok), 19-Дек-21, 10:01 
Из попыток объяснить мне, чем плох в данном случае enum, я понял, что тебе не нравится само слово enum, отсутствие префикса #, обработка после фазы препроцессора, наличие фигурных скобок и ещё масса каких-то факторов. Это прямо следует из обобщения "всем плох". Я хотел увидеть пару претензий к enum не на тему вкусовщины. Не вижу причин, по которым я якобы хочу их сам выдумывать.
Ответить | Правка | Наверх | Cообщить модератору

200. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (-), 23-Дек-21, 12:29 
> Пару конкретных причин?

1) Вообще не присутствует в препроцессоре.
2) Какому типу данных enum вообще соответствует? А, хрен его знает, прямо по стандарту? Удобно, удачи в валидации :)

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

204. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от n00by (ok), 23-Дек-21, 14:49 
Спасибо.

>> Пару конкретных причин?
> 1) Вообще не присутствует в препроцессоре.

Что в данном случае зависит от фазы трансляции?

> 2) Какому типу данных enum вообще соответствует? А, хрен его знает, прямо
> по стандарту?

В данном случае все в одной единице трансляции, даже в одном файле. Тип приводится к целому.

> Удобно, удачи в валидации :)

Макрос разве её прошёл? :)

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

213. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (-), 24-Дек-21, 07:15 
> Что в данном случае зависит от фазы трансляции?

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

С #define или -DABCD=3 при компиле потом можно как-то так
#if (ABCD > 2)
...
С enum это не катит. Не существует он там. А в рантайм - уже не то. Это лишние падения, лишние ветки кода и проч.

> В данном случае все в одной единице трансляции, даже в одном файле. Тип приводится к целому.

Которому из таковых? У сей вообще странные взгляды на целые числа, можно увидеть если -Wconversion врубить. Проблема enum'а в том что вообще не специфицировано во что это превратится.

Еще интереснее что если сделать typedef на enum {OPTION1, OPTION2} - потом переменной с тем типом можно влегкую назначить 42 и это как бы ок. Правда в gcc11 статический анализер научился такое замечать, но вообще это надо было в стандарте прописать, а не так.

>> Удобно, удачи в валидации :)
> Макрос разве её прошёл? :)

Он не прошел sanity check на использование скобок. Впрочем, с типами там не сильно лучше enum, однако это хоть как-то специфицировано стандартами.

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

222. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от n00by (ok), 24-Дек-21, 15:31 
>> Что в данном случае зависит от фазы трансляции?
> Скажем так, невидимость штуки в препроцессоре зарубает многие вещи. Даже просто прочекать
> что-нибудь на фазе парсинга нельзя.
> С #define или -DABCD=3 при компиле потом можно как-то так
> #if (ABCD > 2)
> ...
> С enum это не катит. Не существует он там. А в рантайм
> - уже не то. Это лишние падения, лишние ветки кода и
> проч.

В общем случае это верно, но к данному частному не относится.

>> В данном случае все в одной единице трансляции, даже в одном файле. Тип приводится к целому.
> Которому из таковых? У сей вообще странные взгляды на целые числа, можно
> увидеть если -Wconversion врубить. Проблема enum'а в том что вообще не
> специфицировано во что это превратится.

В данном случае -Wconversion не покажет.

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

231. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от Аноним (-), 02-Янв-22, 12:49 
> В общем случае это верно, но к данному частному не относится.

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

> В данном случае -Wconversion не покажет.

В данном - не покажет. Но вообще, enum'ы с их "а хрен бы его знает что это за тип" довольно странная зверушка. У сей довольно специфичные идеи насчет работы с целыми, но с enum они смогли сделать это еще более странно. Так то обычно работает, но капканы все же есть. Или можно получить совершенно угарные warning на ровном месте при попытке хорошего анализа кода на фазе компиляции и статического анализа, при том - валидные. Некоторые вещи в стандартах задефайнены не очень хорошо, типизация enum одна из таковых.

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

236. "Переполнение буфера в Toxcore, эксплуатируемое через отправк..."  +/
Сообщение от n00by (ok), 08-Янв-22, 14:48 
Спасибо, единообразие это аргумент. С другой стороны кто-то может захотеть вынести все макросы в заголовочный файл, который включают все подряд, а enum это затруднит.
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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