| |
| 2.3, titt (?), 19:26, 24/10/2026 [^] [^^] [^^^] [ответить]
| +3 +/– |
альтернатива gzip, чтобы сжимать данные веб трафика и тд
| | |
| |
| 3.28, нах. (?), 20:32, 24/10/2026 [^] [^^] [^^^] [ответить]
| +3 +/– |
помню славные времена диалапа, тогда ничего сжимать не надо было и страницы грузились даже на тех соединениях быстрее современного оптимизированного вэба, когда и где свернули не туда?
| | |
| |
| 4.44, Аноним (44), 21:31, 24/10/2026 [^] [^^] [^^^] [ответить]
| +8 +/– |
Не надо сказок, помню я, как они грузились (это когда грузились вообще).
Кстати, gzip-сжатие чуть ли не с появления веба использовалось.
| | |
| 4.142, Ivan_83 (ok), 03:22, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Ты видимо забыл что модем сам умел аппаратно чего то там сжимать, от чего большие тексты могли пролетать быстрее скорости линка мопеда :)
Зато теперь ты вебкамщице модешь прямо через браузер дикпик показать в действии через вебку в обмен на деньги (тоже через браузер кстати) и то как у себя там крутится :)
И ты же не будешь спорить что видео в браузере лучше чем та масяня и крокмен что мы мотрели через флешплеер плагин :)
| | |
|
|
| |
| 3.85, Ivan_83 (ok), 01:18, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Ну так к слову им то оно окупилось.
Даже если оно на 1% лучше жмёт при тех же затратах проца это уже весьма заметные деньги на их объёмах отдачи, даже если из этой отдачи считать только текст.
| | |
|
| 2.8, Аноним (8), 19:49, 24/10/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
Brotli q4 имба, заменяет gzip q3 по скорости и качеству сжатия. Там ещё чёт со словарями есть, но уже менее универсально.
| | |
| 2.14, Аноним (14), 20:07, 24/10/2026 [^] [^^] [^^^] [ответить]
| –4 +/– | |
ты браузер-то открой
> accept-encoding gzip, deflate, br, zstd | | |
| |
| 3.23, нах. (?), 20:29, 24/10/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
в браузеры много чо встроено и 90% из этого нигде не используется.
| | |
| |
| 4.74, Аноним (20), 00:14, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Так тебя эксплоит не спросит, если ты не отключил все эти финтифлюшки.
| | |
|
|
|
| |
| 2.7, Аноним (7), 19:31, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
В руки программиста попал инструмент, где надо делать самому, а он привык к полу-автовождению.
| | |
| |
| 3.12, Аноним (20), 19:57, 24/10/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
Увы не нашлось в Google такого уровня программистов как на opennet!
| | |
| |
| 4.34, Аноним (34), 20:35, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Просто на всех "советских программистов с профильным техническим образованием" (как тут любят дуть щеки) не хватит кора дуб даже в гугле.
| | |
| |
| 5.35, Аноним (34), 20:36, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
P.S. Ведь как они утверждают, настоящий программист должен сидеть на старом железе и превозмогать, а современное оборудование годится только для игрушек. (с)
| | |
| |
| 6.39, Аноним (39), 20:55, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
А разве нет?
Чтобы писать код i9 9999900kfc не нужен, голова и руки нужны.
Это чтобы компилить он нужен, но зачем все яйца держать в одной корзине?
| | |
|
|
|
| 3.13, Аноним (13), 20:06, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> В руки программиста попал инструмент, где надо делать самому
Ну он и сделал - очередную CVE.
| | |
|
| |
| 3.18, Аноним (18), 20:20, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> В проекте, где почти весь код на typescript
... что прекрасно показывает, что одного файла на dыpяxе достаточно чтобы испортить весь проект на любом языке)))
Спасибо что обратили на это внимание!
| | |
|
| 2.43, Аноним (43), 21:27, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Это ж ты тогда в одном треде про раст vs Cи показал как надо и заюзал знаковый int для длины . Может и здесь ты навайбкодил в brotli?
| | |
| |
| 3.54, Инопланетянин (?), 22:24, 24/10/2026 [^] [^^] [^^^] [ответить]
| +2 +/– | |
> и заюзал знаковый int для длины
Я тебя разочарую https://google.github.io/styleguide/cppguide.html#Integer_Types
> On Unsigned Integers
Unsigned integers are good for representing bitfields and modular arithmetic. Because of historical accident, the C++ standard also uses unsigned integers to represent the size of containers - many members of the standards body believe this to be a mistake, but it is effectively impossible to fix at this point. The fact that unsigned arithmetic doesn't model the behavior of a simple integer, but is instead defined by the standard to model modular arithmetic (wrapping around on overflow/underflow), means that a significant class of bugs cannot be diagnosed by the compiler. In other cases, the defined behavior impedes optimization.
That said, mixing signedness of integer types is responsible for an equally large class of problems. The best advice we can provide: try to use iterators and containers rather than pointers and sizes, try not to mix signedness, and try to avoid unsigned types (except for representing bitfields or modular arithmetic). Do not use an unsigned type merely to assert that a variable is non-negative.
| | |
| |
| 4.84, Ivan_83 (ok), 01:15, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Рекомендации гугла / хотелки от своих рабов - не истина в последней инстанции.
И хотя там многое правильно написано, я предпочитаю size_t/ssize_t для случаев когда число может быть связано с размером адресуемым в памяти.
int хорош там где как то пофик, типа кода ошибки: 0 нет ошибки, а если не 0 - то чото делаем, плюс там же всегда понятен диапазон значений.
Опять же рекомендации там про кресты, на С оно не всегда 1-в-1 перекладывается не теряя смысл.
| | |
| |
| |
| 6.134, Ivan_83 (ok), 02:53, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
По приведённой вами ссылке крестовое месиво и проблема там не в типах а в архитектуре/дизайне.
vec.size() корень этой проблемы.
1. В цикле вызывается ненужная функция, которая чёрти пойми что делает. Как минимум это роняет производительность.
2. Не очевидно какого типа возвращаемое значение. Всмысле надо куда то лезть и смотреть.
Даже если взять мой любимый size_t нет гарантий что его хватит и там на самом деле не off_t на 128+бит.
3. Типа правильный вариант с gsl::index работать может в большинстве случаев только с деградацией производительности: для цикла где идут с уменьшением индекса и могут свалится в отрицательные значения gsl::index должен быть минимум на 1 бит для знака больше. Если vec.size() это size_t (что было бы логично) будет означать что gsl::index будет иметь отдельный код для обработки знака либо это будет 127 бит (для AMD64). В обоих вариантах приятного мало.
| | |
| |
| 7.140, Инопланетянин (?), 03:11, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> 1. В цикле вызывается ненужная функция, которая чёрти пойми что делает. Как минимум это роняет производительность.
С -O2 вызова не будет.
| | |
|
|
| 5.110, Аноним (13), 02:14, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Рекомендации гугла / хотелки от своих рабов - не истина в последней инстанции.
То ли дело рекомендации опеннетных ванек.
> я предпочитаю size_t/ssize_t
Жаль, что ты не пишешь софт, который юзают миллиарды людей.
> Опять же рекомендации там про кресты
Ну да, signed/unsigned в крестах ведь совсем не такой, как в С.
| | |
| |
| 6.136, Ivan_83 (ok), 02:56, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Даже я точно не знаю где работает тот код который я написал, он же часто под BSD2 лицухой. И по работе я тоже не помню на пересчёт всех организации которые клиенты и тем более не знаю сколько там народу ходит через продукт.
Вы можете и дальше думать что я пишу только в фантазиях для себя любимого :)
| | |
|
| 5.112, Инопланетянин (?), 02:16, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
> предпочитаю size_t/ssize_t для случаев когда
> число может быть связано с размером адресуемым в памяти.
У них также.
| | |
|
|
| 3.105, laindono (ok), 02:09, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Полагаю это было в том контексте, где конкретный тип не важен. Если вообще было. Ну и я не кодил на сишечке лет 10.
> и здесь ты навайбкодил
Я не пользуюсь аишечкой для написания кода. Мне просто не интересно это.
| | |
|
| 2.58, Bottle (?), 22:34, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Есть два типа программ:
1. В которых находят уязвимости.
2. Которыми никто не пользуется.
| | |
|
| 1.11, Аноним (7), 19:55, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– | |
>Среди затрагиваемых уязвимостью проектов:
Может в "академии" что-то ни то?
>декодировщика формата сжатия данных Brotli
К чему такое обилие "доброхотов" на одну функцию сжатия?
| | |
| 1.17, Аноним (18), 20:16, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –8 +/– |
Уязвимость из-за Out-of-bounds write.
Дыpeнь в файле c/dec/decode.c [1]
И сразу же под ударом десяток проектов, которым хватило глупости использовать эталонную библиотеку на С(ve)-язычке.
Никогда такого не было и вот опять!
1) github.com/google/brotli/commit/da9806362874b9bd4b552a3af360b5d6347beb12)
| | |
| |
| 2.68, Инопланетянин (?), 23:16, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
> И сразу же под ударом десяток проектов, которым хватило глупости использовать эталонную
> библиотеку на С(ve)-язычке.
> Среди затрагиваемых уязвимостью проектов: Node.js, Bun, Envoy, Istio, web-браузеры, прокси-серверы, HTTP-клиенты, HTTP-серверы, архиваторы, прокси-серверы, UEFI-прошивки, просмотрщики JPEG XL, декодирующие контент библиотеки для Python, Ruby, Java, PHP и .NET и связанные с ними зависимости.
Получается один ты умный? Да?
| | |
|
| 1.21, Анонимусс (?), 20:28, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –6 +/– |
Правду сказал какой-то безымянный анон на опенке:
"C in CVE stands for C language" (c)
Причем уязвимость жила в коде с марта 2018 года.
И ни один из тыщщи глаз не заметил.
А то, что уязвимость найдена ЫЫ отдельно доставляет.
Ждет воя "ВыФсеВрете!!!111" от кордвадубных луddитов :)
| | |
| 1.25, нах. (?), 20:30, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
очередная надо понимать уязвимость эксплуатационная возможность которой только в теории в тепличных условиях
| | |
| |
| 2.75, Аноним (20), 00:18, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Прям как на PHP! Патчить не надо, это ж нужно какую-то бесконечно хитрую и упорную машину для этого использовать, а такой пока не придумали
| | |
|
| |
| 2.31, нах. (?), 20:33, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> надо было на C++ с умными указателями и контейнерами писать
раз надо, то пиши
| | |
|
| 1.29, Твайлайт Спаркл 2 (?), 20:32, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Веб-сервера вряд ли уязвимы, они только сжимают данные, но не разжимают. Как минимум модуль ngx_brotli, хотя всё равно стоит его перекомпилировать…
| | |
| |
| 2.36, Гость (??), 20:37, 24/10/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
все уже перекомпилировали на прошлой неделе с новыми версиями nginx
| | |
| |
| |
| 4.53, Гость (??), 22:17, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
не важно, при каждом обновлении nginx, модуль нужно собирать снова, а исправления brotli появились ещё раньше
| | |
|
|
| 2.100, penetrator (?), 01:53, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
на сервере может крутиться клиент который интегрируется со сторонним API
очень часто явление, буквально в каждом проекте есть calling внешнего сервиса
| | |
|
| 1.38, Аноним (38), 20:53, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
По аналогии с комментами под новостью про уязвимость в пхп стало быть надо хоронить все браузеры и большУю часть серверного ПО. Короче закапываем интернет и по-старинке 5 километров в гору зимой через весь город
| | |
| 1.46, Аноним (46), 21:37, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
Посмотрел я этот проблемный файл https://github.com/google/brotli/blob/master/c/dec/decode.c
Ничего сильно необычного нет. Правда, несколько напрягяют выражения
*repeat += repeat_delta + 3U;
++h->code_length_histo[v];
но понять можно, главное чтобы компилятор понял так же как вы.
Стиль тоже, немного странно, что всё делается в switch с обилием fall through, выходы return прямо из case.
В функции ProcessCommandsInternal насчитал 29 goto.
А так - код как код, выделяют кольцевые буферы для данных.
| | |
| |
| 2.47, Аноним (43), 21:43, 24/10/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
> выходы return прямо из case.
и? что плохого то?
> В функции ProcessCommandsInternal насчитал 29 goto.
Очередной покусанный Дейкстрой борец с архитектурой процессоров?
| | |
| |
| 3.50, Аноним (15), 21:49, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Очередной покусанный Дейкстрой борец с архитектурой процессоров?
железные дровосеки тоже не очень любят бранчи со всякими бранчпредикшенами :)
| | |
| |
| |
| 5.76, Аноним (77), 00:26, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
э-э ... вобщем, вперёд более вероятно чем назад, а если goto назад, то ... вот эта штука и ломается
| | |
| |
| 6.89, Инопланетянин (?), 01:25, 25/10/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
> э-э ... вобщем, вперёд более вероятно чем назад, а если goto назад,
> то ... вот эта штука и ломается
Зачем ему угадывать в конвеере будет прыжок или нет, если он безусловный и всегда будет?
| | |
| |
| 7.113, Аноним (15), 02:17, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
> Зачем ему угадывать в конвеере будет прыжок или нет, если он безусловный
> и всегда будет?
goto бранч или не бранч?
| | |
|
|
|
|
| 3.51, Аноним (46), 21:54, 24/10/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
Как, интересно, отлаживали этот код, там вызовов assert нет. Ну там применяется макрос для отладочного вывода ( BROTLI_DUMP), но это ведь не assert
>> выходы return прямо из case.
>и? что плохого то?
А вот упомянутый вами Дейкстра говорил, у процедуры должен быть один вход и один выход. Почему он так говорил?
| | |
| |
| 4.52, Аноним (43), 22:04, 24/10/2026 [^] [^^] [^^^] [ответить]
| +2 +/– | |
Про единый вход в процедуру - да, согласен. А как их может быть больше одного, если функция в памяти это просто набор подряд идущих инструкций CPU с прологом, кодом и эпилогом и если ты её вызываешь, то просто переводишь регистр StackPointer на адрес функции в памяти? Или он имел ввиду про всякие longjump? Ну это как бы не совсем то - изначально то ты все равно в функцию попадаешь через пролог.
А по поводу единого выхода из процедуры - ну хз почему он так сказал. Наверно потому что он любил лапшу из if/else. А может потому что он был алгоритмистом и ничего сложнее ОС 1960х гг не писал.
| | |
| |
| 5.120, Аноним (15), 02:30, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Ну это как бы не совсем то - изначально то ты все равно в функцию попадаешь через пролог.
функция это абстракция, для ЦПУ программа это плоский набор инструкций.
| | |
|
| 4.56, Инопланетянин (?), 22:32, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Дейкстра говорил, у процедуры должен быть один вход и один выход. Почему он так говорил?
Он в каком году жил? Поищи код тех времен. Это была типичная лапша из goto. Тут же в одной функции для перехода между состояниями.
| | |
| |
| 5.90, Инопланетянин (?), 01:26, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
> Скорее всего тесты для каждой функции, в лучшем случае, в худьшем тестовый
> набор который написали руками.
> И assert отладке не очень помогает. Он как то работает только у
> разраба на машине...
> https://github.com/rozhuk-im/liblcb/blob/master/include/math/big_num.h#L142
> Вот такие макросы намного удобнее, они тебе сразу вываливают бэктрейс до нужного
> места не роняя прогу - те можно не только под отладчиком
> найти проблему.
И где у тебя там бэктрейс? Это тупо печать source_location
| | |
| |
| 6.107, Ivan_83 (ok), 02:11, 25/10/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
Чтобы понять где там бэктрейс - надо посмотреть как устроен остальной код.
Но даже если бы бэктрейса не возникало, знать место ошибки без падения программы сильно приятнее.
| | |
| |
| 7.114, Аноним (13), 02:18, 25/10/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
>> И где у тебя там бэктрейс? Это тупо печать source_location
> Чтобы понять где там бэктрейс - надо посмотреть как устроен остальной код.
Иди почитай, что такое бэктрейс - и больше не ляпай умных слов, смысла которых не понимаешь.
| | |
|
|
|
| 4.118, Аноним (15), 02:27, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
> А вот упомянутый вами Дейкстра говорил, у процедуры должен быть один вход
> и один выход. Почему он так говорил?
в паскале у процедур нет выхода :)
| | |
|
|
| 2.82, Ivan_83 (ok), 01:04, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Префиксный инкремент - да, на С вне выражения смотрится тупо, артефакт от крестовика-оптимизатора.
return внутри switch() - как раз таки нормально, наоборот глупо тянуть поток выполнения до конца функции-единой точки возврата.
goto ок, если они на 1-2-3 метки, больше уже наверное надо бы как то по другому попробовать написать.
if (addon->block_bits != 255u) return;
while (addon->chunk_offsets[index + 1u] < cursor) index++;
меня такие однострочники сильнее напрягают.
Притом там же рядом:
if (context_index + reps > context_map_size) {
return
BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT);
}
не пожалели ни строчек отсыпать ни скобочек.
Ещё там очень длинные слова в названиях везде, это и смотрится и читается плохо.
Так же CamelCase названия функций: InitializeCompoundDictionaryCopy и типов и переменных.
За BROTLI_FALSE - я бы точно бил молотком по голове.
if (!alloc_func && !free_func) {
free(state);
} else if (alloc_func && free_func) {
free_func(opaque, state);
}
За такое - по рукам: раз взялся такое сделать - сделай один раз инит alloc_func и free_func своими врапперами malloc/free и не пиши дальше никаких условий.
Можно предположить по стилю что писал разраб который пишет в основном на крестах и под венду, а ещё вероятно английский не его родной язык. Учитывая обилие int он ещё и не очень опытный.
И да, столько int вместо size_t/ssize_t - вероятно мы ещё увидим новости про эту реализацию :)
| | |
| |
| |
| 4.95, Ivan_83 (ok), 01:42, 25/10/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Потому что такой код неизбежно потратит чьё то время и деньги, а раз автор до сих пор не усвоил что так делать не стоит, то ему требуется другой вид стимуляции для улучшения обучения :)
| | |
| |
| 5.97, Инопланетянин (?), 01:47, 25/10/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Потому что такой код неизбежно потратит чьё то время и деньги, а
> раз автор до сих пор не усвоил что так делать не
> стоит, то ему требуется другой вид стимуляции для улучшения обучения :)
Завести issue, сделать pr? Да ну, бред какой-то.
| | |
| |
| 6.102, Ivan_83 (ok), 01:57, 25/10/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
Учитывая объём кода и предполагаемый объём переделок - проще завести сразу отдельный репозиторий и сделать реализацию алгоритма с нуля, по мотивам оригинала.
Я уже приходил с PR на 1-10-50-80% объёма кода проекта и часто это заканчивалось просьбой или отвалить или принести в виде серии однострочных понятных патчей.
И с другой стороны я тоже был если что, и тоже не просто такое отревьювить и принять.
Конкретно в этом проекте я лично не заинтересован и туда ничего не понесу.
| | |
|
|
|
| 3.93, Инопланетянин (?), 01:39, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
> Ещё там очень длинные слова в названиях везде, это и смотрится и
> читается плохо.
Держите сишника-любителя уплс названий. Чтся плх, а вт strcpy, strncpy, strcspn и др чтся грзд лчш.
> За BROTLI_FALSE - я бы точно бил молотком по голове.
А может доку сначала бы открыл https://brotli.org/types.html
> Можно предположить по стилю что писал разраб который пишет в основном на
> крестах и под венду, а ещё вероятно английский не его родной
> язык. Учитывая обилие int он ещё и не очень опытный.
> И да, столько int вместо size_t/ssize_t - вероятно мы ещё увидим новости
> про эту реализацию :)
В каких местах тебя int не устроил?
| | |
| |
| 4.101, Ivan_83 (ok), 01:53, 25/10/2026 [^] [^^] [^^^] [ответить]
| –2 +/– |
Любитель у нас вы и автор того бротли кода.
Откройте фрю, линукс и просто POSIX стандарт и найдите там длинные слова.
Я лично прошёл через венду с CreateFile(10 аргументов) до POSIX open(3 аргумента) и обратно не хочу.
Я точно так же писал в camel case потому что на венде так принято. И читать даже свой код с вот этими длинными и не выразительными словами не очень удобно, не говоря об форматировании под супер широкие мониторы.
Если вы думаете что давать короткие и понятные названия глупо и просто - уверяю, всё с точностью до наоборот, и каждый дурак может написать: int iThis_is_Index_in_the_First_Array_That_Contain_User_Input = 0;
> А может доку сначала бы открыл https://brotli.org/types.html
#define BROTLI_BOOL int
A portable bool replacement.
Если вы не понимаете почему это плохо - это ваша проблема.
Как минимум есть stdbool.h.
Как максимум это слишком длинно написано.
Если написанное в книге/доке для вас истина в последней инстанции - вы ещё не позврослели до нахождения ошибок в чужих книгах и написания своих.
> В каких местах тебя int не устроил?
Почти во всех функциях где автор его использовал то как индекс, то как оффсет то как что то ещё.
| | |
| |
| 5.106, Инопланетянин (?), 02:09, 25/10/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Любитель у нас вы и автор того бротли кода.
> Откройте фрю, линукс и просто POSIX стандарт и найдите там длинные слова.
Интерфейс pthreads. А значешь почему? Потому что его не диды делали, которые букву e на конце creat экономят.
> Я лично прошёл через венду с CreateFile(10 аргументов) до POSIX open(3 аргумента)
> и обратно не хочу.
> Я точно так же писал в camel case потому что на венде
> так принято. И читать даже свой код с вот этими длинными
> и не выразительными словами не очень удобно, не говоря об форматировании
> под супер широкие мониторы.
> Если вы думаете что давать короткие и понятные названия глупо и просто
> - уверяю, всё с точностью до наоборот, и каждый дурак может
> написать: int iThis_is_Index_in_the_First_Array_That_Contain_User_Input = 0;
Длина от контекста зависит. Всякие strncpy это удобно по твоему?
>> А может доку сначала бы открыл https://brotli.org/types.html
> #define BROTLI_BOOL int
> A portable bool replacement.
> Если вы не понимаете почему это плохо - это ваша проблема.
> Как минимум есть stdbool.h.
А если они не могут использовать stdbool?
>> В каких местах тебя int не устроил?
> Почти во всех функциях где автор его использовал то как индекс, то
> как оффсет то как что то ещё.
Глянул я в decode.c - size_t там тоже есть. Если int значит он уверен, что хватит его.
| | |
| |
| |
| 7.127, Аноним (13), 02:40, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> unix way это писать код так чтобы он читался как книга
Ты серьезно? Вот эта вся дичь с cp mv tar xvcf pwd - это "как книга"? Да это буквально эталонный пример того, как делать не нужно.
> шириной 80-сколько то там символов.
Это все еще стандартная ширина для большинства современного кода, которая вообще не требует всякой юниксовой дичи с именами в 2-5 символов. Если ты, гений, не пишешь все в одну строку.
| | |
| |
| 8.135, Норм (?), 02:53, 25/10/2026 [^] [^^] [^^^] [ответить] | +/– | Вам cp и mv не очевидны без словаря Я понимаю там тар - кваквашка Но cp и mv ... текст свёрнут, показать | | |
|
|
| 6.132, Норм (?), 02:49, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Если int значит он уверен, что хватит его.
Ахаха! Главное верить! Вера и увереность у кодера есть, и это главное.
| | |
|
|
|
|
|
| |
| 2.71, LaunchWiskey (ok), 23:22, 24/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Спокойно, сейчас найдут теоретическую уязвимость в HTTPS и европейские госсайты в целях безопасности откатятся на HTTP.
| | |
| 2.87, Ivan_83 (ok), 01:21, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Оно никак не связано, бротли на уровне транспорта работает.
Вам надо в новость про пхп было это писать.
| | |
|
| 1.59, Какойто Какойтович (?), 22:36, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Слишком много крику для логической уязвимости, которую ещё и эксплуатировать нельзя. Волнует другое, чем занимались разработчики с февраля, когда бага была найдена, по октябрь.
| | |
| 1.62, Инопланетянин (?), 22:40, 24/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– | |
> может использоваться для удалённого выполнения кода при атаке на проекты
Эксплойт есть или опять теория?
| | |
| 1.73, Аноним (73), 00:07, 25/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– | |
>Но так как выделенный буфер не был рассчитан на дополнительно прочитанные данные, они записывались в область за его пределами, в которой хранилось внутреннее состояние декодировщика.
Коротко о том, зачем нужны зависимые типы.
| | |
| |
| 2.80, Ivan_83 (ok), 00:42, 25/10/2026 [^] [^^] [^^^] [ответить]
| –5 +/– |
Не нужны.
Считать надо было правильно и всё.
И проверять размеры того куда пишешь.
| | |
| |
| 3.94, Инопланетянин (?), 01:42, 25/10/2026 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Не нужны.
> Считать надо было правильно и всё.
> И проверять размеры того куда пишешь.
Ахаха.
Типикал сишник до уязвимости:
- Все нормально, нужно нормально писать просто. Проверки как в расте не нужны - они тормозят.
После уязвимости:
- Считать надо было правильно и всё. И проверять размеры того куда пишешь.
| | |
| |
| 4.103, Ivan_83 (ok), 02:03, 25/10/2026 [^] [^^] [^^^] [ответить]
| –3 +/– |
Достаточно того что ваш раст не читабелен и не встраивается так же легко и понятно как С либы куда угодно, так же он предотвращает только несколько типов ошибок но далеко не все. Бонусом он привносит тяжёлый рантайм и тяжёлую и бесполезную компиляцию, и насколько я понимаю, в таких случаях он "безопасно" крашит прогу.
Потому оно ни разу не интересно, теоритизируйте дальше в уголочке.
| | |
| |
| 5.116, Аноним (13), 02:24, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Достаточно того что ваш раст
Наркоман что ли? Где ты упоминания Раста увидел?
| | |
| |
| 6.144, Ivan_83 (ok), 03:29, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Хорошо, давай заменим раст скажем на вижалбейсик. От этого только читабельность изменится.
| | |
|
| 5.117, Инопланетянин (?), 02:24, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
> Достаточно того что ваш раст не читабелен и не встраивается так же
> легко и понятно как С либы куда угодно, так же он
> предотвращает только несколько типов ошибок но далеко не все. Бонусом он
> привносит тяжёлый рантайм
Ну вон в dropbox переписали brotli на раст (без std) с си интерефесом наружу.
| | |
| 5.137, Норм (?), 02:57, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
В расте нет рантайма.
Про читабельность вы не правы.
Хотя соглашусь что сипипи подобный синтаксис ошибка (не только раста).
| | |
|
|
| 3.98, Сисишник (?), 01:48, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
У нейронок ограниченное внимание, такие ошибки неизбежно будут возникать, если пытаться вручную память выделять и чистить
Я про мясные очевидно
| | |
| 3.130, Аноним (13), 02:47, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
> Считать
> проверять размеры
За более чем 50 лет сишники не научились ни тому, ни другому. Так что да, зависимые типы нужны.
> Считать надо было правильно и всё.
Классическое "чтобы не было ошибок - не делайте ошибки". Мля, как же никто до тебя не додумался до такого эффективного решения?
| | |
| |
| 4.141, Ivan_83 (ok), 03:18, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Вы спорите сами с собой.
Я лично стараюсь везде где можно+имеет смысл добавлять проверки размера.
Я передаю вместе с указателем следующим параметром размер области на которую он сслыается чтобы проверять внутри функции.
Я возвращаю из функции размер записанных в буфер данных.
Я не использую str* функции почти никогда за пределами константных строк.
Вот примерно про такие правила кодинга на С я писал.
Про считать правильно - да, из разряда делай хорошо, но тут и в других языках накосячить можно, да и не только в языках но и ракету/спутнег уронить :)
| | |
|
|
| 2.126, Инопланетянин (?), 02:37, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
>>Но так как выделенный буфер не был рассчитан на дополнительно прочитанные данные, они записывались в область за его пределами, в которой хранилось внутреннее состояние декодировщика.
> Коротко о том, зачем нужны зависимые типы.
Было бы интересно посмотреть на код бротли на яп с их поддержкой. Но вряд ли это будет дешево с поддержкой.
| | |
|
| 1.79, Ivan_83 (ok), 00:41, 25/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Ну вот, ура, очередная новость о том как страшно жить!
У меня прям ломка с утра, думал ещё про пхп будет, а тут даже лучше!!!
Ждём на след неделе ещё более страшные новости!
А пока давай карту в красных тонах с избыточной смертностью от новой уязвимости по миру!
PS: изначально не понимал нафик оно сдалось и отключал бротлю везде где была такая возможность. zlib/zstd вполне хватает для потокового не напряжного сжатия.
Где требуется суперсжатие надо смотреть уже не потоковые версии, а такие чтобы один раз запаковал и потом раздаёшь себе архив.
Насчёт списка - надо понимать что не везде оно активно, те проект с либой может и собран но дойти до эксплуатации может и не выйти.
Прикольно то что в OpenSSH тоже не стали торопится и внедрять модную бротлю в добавок к zlib.
| | |
| |
| 2.96, Инопланетянин (?), 01:44, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
> Ну вот, ура, очередная новость о том как страшно жить!
> У меня прям ломка с утра, думал ещё про пхп будет, а
> тут даже лучше!!!
> Ждём на след неделе ещё более страшные новости!
> А пока давай карту в красных тонах с избыточной смертностью от новой
> уязвимости по миру!
> PS: изначально не понимал нафик оно сдалось и отключал бротлю везде где
> была такая возможность. zlib/zstd вполне хватает для потокового не напряжного сжатия.
Ахаха
CVE-2026-22184
CVE-2026-85091
CVE-2024-11477
| | |
| |
| 3.104, Ivan_83 (ok), 02:06, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
И?
Меня конкретно бротля напрягала своей долгой сборкой, насколько помню.
Плюс zlib у меня есть в системе, а бротля +1 зависимость которая делает тоже самое, может даже капельку лучше, но в моих условиях разницы нет.
| | |
|
| 2.99, Сисишник (?), 01:52, 25/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>изначально не понимал нафик оно сдалось
А как иначе в такую кучу софта бекдоров насувать?
| | |
|
|