URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 133783
[ Назад ]

Исходное сообщение
"Результаты аудита безопасности библиотек Boost"

Отправлено opennews , 23-Май-24 09:51 
Фонд OSTIF (Open Source Technology Improvement Fund), созданный с целью усиления защищённости открытых проектов, опубликовал результаты аудита  безопасности библиотек Boost, применяемых во многих проектах на языке  C++. Аудит, который был проведён по заказу OSTIF и Amazon Web Services итальянской компанией Shielder, выявил 7 проблем, из которых одной присвоен средний уровень опасности, а четырём - низкий, две проблемы опубликованы в виде информационных замечаний...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=61233


Содержание

Сообщения в этом обсуждении
"Результаты аудита безопасности библиотек Boost"
Отправлено п00by , 23-Май-24 10:44 
Из отчета:
> Если вы являетесь разработчиком, использующим библиотеки Boost, рекомендуется выполнить строгую проверку входных данных.

А что, можно не проверять?


"Результаты аудита безопасности библиотек Boost"
Отправлено Fracta1L , 23-Май-24 10:57 
Можно, конечно. Кто тебя заставит?

"Результаты аудита безопасности библиотек Boost"
Отправлено п00by , 23-Май-24 11:47 
Обычно в документации к функциям программных библиотек отражают необходимость верификации/очистки входных данных. Иначе будет беспорядок. Раньше были случаи, когда за корректность данных отвечали сами функции. Например, библиотеки ASA или SSP. Но это совершенно неудобно - анализировать множество кодов при некорректном завершении (можно, кстати, перепутать, какой код что означает). Считаю, что незачем нагружать функции несвойственными процедурами. Их цель - корректно отрабатывать алгоритмы обработки при правильных входных данных.

"Результаты аудита безопасности библиотек Boost"
Отправлено Sw00p aka Jerom , 23-Май-24 14:21 
> Считаю, что незачем нагружать функции несвойственными процедурами. Их цель - корректно отрабатывать алгоритмы обработки при правильных входных данных.

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

пс: типы ведь проверяет компилятор (и кусок рантайма) :)


"Результаты аудита безопасности библиотек Boost"
Отправлено srgazh , 24-Май-24 17:47 
Да документация это хорошо. Но лучше провести тест как поведёт себя функция. А если функция ожидает сам тип? Тут можно написать статью про тестирование.... Ааа зачем вам тесты забыл, покажем типа работает, получим денег. Ве не с бюджетной организации?

"Результаты аудита безопасности библиотек Boost"
Отправлено Sw00p aka Jerom , 25-Май-24 00:18 
> Ааа зачем вам тесты

Ну да фаззинг тесты в приложении к документации, повторяю, типы зачем тогда?

> Ве не с бюджетной организации?

Нет, из "карманно-алэгархической" :)


"Результаты аудита безопасности библиотек Boost"
Отправлено фаззер , 25-Май-24 14:46 
Вот кстати libtorrent использует boost и там применяют фаззинг-тесты, вопрос качества этих тестов остается отарытым.

"Результаты аудита безопасности библиотек Boost"
Отправлено Sw00p aka Jerom , 25-Май-24 15:47 
> вопрос качества этих тестов остается отарытым.

как и обычных тестов и всяких санитайзеров и мемликфайндеров. Ну че готовы писать документацию (талмуды)?



"Результаты аудита безопасности библиотек Boost"
Отправлено Анон666 , 23-Май-24 15:22 
>Их цель - корректно отрабатывать алгоритмы обработки при правильных входных данных

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


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 17:23 
Входные данные предлагается очищать перед их правомерным использованием и только затем предъявлять функциям обработки в адекватном виде.

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


"Результаты аудита безопасности библиотек Boost"
Отправлено Sw00p aka Jerom , 23-Май-24 18:02 
> Не нужно здесь выкатывать свои измышления, а потом пафосно их опровергать.

типы тогда зачем нужны?


"Результаты аудита безопасности библиотек Boost"
Отправлено фаззер , 25-Май-24 14:50 
мне на собесе такой тест давали.
приложение не проверяет входные данные из полей и вам нужно разработать тесты чтобы в итоге работала сумма двух полей без ошибок. и назвать все возможные комбинации (то есть произнести). мосбиржа.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 15:51 
A kak vi predlagaete togda postupat‘? Dva raza proveryat‘ bufer? Tak eto medlenno, bistree srazu parsit‘ i reshat‘, pravilniye dannie ili net.

"Результаты аудита безопасности библиотек Boost"
Отправлено Карлос Сношайтилис , 23-Май-24 21:40 
Если тебя держат в подвале, где нет воды и нормальной клавиатуры, моргни два раза

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 22:20 
Ну что ты, чел просто слаку поставил

"Результаты аудита безопасности библиотек Boost"
Отправлено xtotec , 24-Май-24 02:45 
И что - по ходу установки забыл как русские буквы выглядят?

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 21:24 
> Можно, конечно. Кто тебя заставит?

Можно всё. Но потом прилетит обратка.


"Результаты аудита безопасности библиотек Boost"
Отправлено aname , 29-Май-24 10:47 
Если написано на расте, то да (тег "сарказм", надеюсь, ставить не надо?)

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 10:57 
>Переполнение стека в библиотеке Boost.Regex × 3

Зачем нужен сабж при наличии std::regex, ctre и кучи специализированных библиотек регулярок?


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 11:08 
> Зачем нужен сабж при наличии std::regex

std::regex взят прямо из boost с минимумом изменений. Как и большая часть остальный нововведений стандартной библиоткки.


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 11:25 
Почему после этого их не выкинуть из современных версий Boost?

"Результаты аудита безопасности библиотек Boost"
Отправлено НяшМяш , 23-Май-24 11:40 
Как раз поэтому - Boost, как внешнюю библиотеку, обновить проще, чем стд.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 12:02 
Нет, проще не иметь дела с boost вообще там, где он не требуется. Тогда его и обновлять не надо, а только компилятор и станд. библиотеку, которые всё равно надо обновлять: для всех самых вкусных constexpr-фич (ranges-кхе-кхе) потребуется самая последняя версия языка с самыми последними экспериментальными фичами.

"Результаты аудита безопасности библиотек Boost"
Отправлено penetrator , 23-Май-24 23:35 
а где он требуется?

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 18:29 
Буст, или Ranges? Буст - ну у него полно уникальных либ, опережающих по фичам и качеству не-Буст-аналоги. Жаль, что многие на другие бусто-либы завязаны. Ranges? Ну представь, у тебя 5 массивов, в каждом куча string_view, из каждого из них нужно сформировать строку путём подстановки в шаблон. Нужно оценить максимальный размер выходной строки чтобы под неё выделить буфер. С помощью ranges ты можешь во время компиляции выбрать длиннейшие строки из каждого массива, после чего можешь так же во время компиляции подставить их в шаблон и взять его длину. На сишке или старых плюсах ты бы ручками выбирал строку максимальной длины максимальную длину, и отдельно длину шаблона, и ручками же считал, уделяя особое внимание нулевым байтам. А потом, при добавлении очередной строки, делал бы круглые глаза на "сишные дырени".

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 12:03 
Проще ли?

"Результаты аудита безопасности библиотек Boost"
Отправлено Да ну нахер , 23-Май-24 17:14 
Тогда зачем с самого начала было совать это в std?

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 18:11 
Т.е. потому что это помойка из багов и гогнокода. Ну да, всё так.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 11:27 
Значит ли жто, что значительная часть реализаций std::regex страдает теми же проблемами?

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 18:07 
Ну... нет, STL-ые варианты редко совместимы с бустовыми. regex в частности

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 12:00 
Для программ, написанных для <(C++11), например. И компиляторов, умеющих только 98 и 03.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 12:05 
А что сразу не на Си, зачем какие-то ++, на Си писать надо, как Линус завещал :)

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 01:56 
> Зачем нужен сабж при наличии std::regex, ctre и кучи специализированных библиотек регулярок?

Затем, что Boost.Regex быстрее std::regex (в любом из популярных компиляторов).


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 18:30 
ctre быстрее обоих.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 18:30 
а PCRE вообще умеет в JIT

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 10:57 
Почему не asio?

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 11:17 
Почему не asio что?

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 12:02 
Аноним имел ввиду, почему Boost.ASIO не проверяли?

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 12:38 
Не знаю

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 13:59 
> Не знаю

а кто знает, если не эксперты опенет?


"Результаты аудита безопасности библиотек Boost"
Отправлено Пряник , 23-Май-24 11:03 
Свалка лишних зависимостей.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 15:26 
Вот, кстати, да: небезопасный код на расте следует искать в первую очередь именно в его стандартной библиотеке. Скидывайтесь на аудит.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 11:58 
>boost::dll

Отличная вещь могла бы быть, но
* завязанность на остальные буст-либы
* header-only-ness
* завязанность на бустовые типы вместо std::
* работа через парсинг бинари, деманглинг всех символов, и уже поиск среди демангленных

портит всю малину.

Касательно деманглинга, они сказали, что у них была идея сделать наоборот

https://www.boost.org/doc/libs/1_66_0/doc/html/boost_dll/des...

но типа

>нет надёжного способа получить mangled имя символа из нутра компилятора во время компиляции

- это плохая отмазка, потому что когда стоит такая задача, то надо генерить не для конкретного компилятора, а вообще все возможные варианты, и их проверять, и генерить как раз надо силами constexpr C++-кода, а не от компилятора получать.

Мне как раз нужна реализация их гипотетического

> std::string mangled_name = boost::dll::magic_mangle(boost::foo);

, но чтобы
* явно генерила mangled-имена для всех компиляторов
* в compile-time

то есть

consteval std::array<std::string_view> mangled_names{
    boost::dll::magic_mangle<boost::foo, boost::dll::compiler::msvc>(),
    boost::dll::magic_mangle<boost::foo, boost::dll::compiler::gcc>(),
};

Разумеется, ещё лучше бы было, если бы она генерила класс, который

1. генерит все варианты манглинга функции для платформы в виде таблицы enum -> результат манглинга
2. первым делом проверяет "свой" компилятор
3. далее - все остальные компиляторы в порядке убывания частоты использования
4. кэширует значение enumа для сдетектированного компилятора
5. при дальнейших поисках функций в этой либе ищет сразу по схеме манглинга сдектектированного компилятора.


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 19:15 
> генерить не для конкретного компилятора, а вообще все возможные варианты

В том числе и те, которые ещё не изобретены? Положи машину времени где взял и шатай континуум своими конпеляциями!


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 13:08 
Си плюс-плюсники напряглись. Программируешь на Си плюс-плюс - вляпаешся в буст.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 14:00 
> Си плюс-плюсники напряглись. Программируешь на Си плюс-плюс - вляпаешся в буст.

либо в кути


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 15:55 
Не обязательно, есть ещё рандомные гитхабовские поделки

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 16:47 
Qt - вещь животворящая.

"Результаты аудита безопасности библиотек Boost"
Отправлено nox. , 23-Май-24 17:27 
Не нравится? У оригинального Qt как минимум 3 форка.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 17:25 
Хорошо, а на С какие либы?

"Результаты аудита безопасности библиотек Boost"
Отправлено nox. , 23-Май-24 17:25 
Сделал немало проектов на С++, ни разу сабж не использовал. Всегда лучше писать самому.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 19:17 
> Всегда лучше писать самому.

Ну показывай уже самописанную прошивку для процессора, ядро, компилятор, юзерленд…


"Результаты аудита безопасности библиотек Boost"
Отправлено nox. , 23-Май-24 20:38 
По вашему, сабж - это "прошивка для процессора, ядро, компилятор, юзерленд"? Не много ли?

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 12:34 
>> Всегда лучше писать самому.
> Ну показывай уже самописанную прошивку для процессора, ядро, компилятор, юзерленд…

В ядре и прошивках сабжу совершенно точно не место.


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 20:32 
Наверное, и ввод-вывод сам писал?

"Результаты аудита безопасности библиотек Boost"
Отправлено nox. , 23-Май-24 20:37 
Это - да. И весьма оригинально, кстати.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 22:21 
В этом комментарии не хватает ссылки на житхаб

"Результаты аудита безопасности библиотек Boost"
Отправлено InuYasha , 24-Май-24 14:09 
нормальные люди на жидхабе не сидят.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 18:33 
порядочные люди этнофолизмы не используют.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 10:35 
Ну то поделитесь опытом. Давайте уже ссылку на проект

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 13:16 
Буст не нужен. Почти любая ошибка выдает сообщение на несколько экранов, без бутылки не разобрать про что. Средство должно помогать в работе а не доводить до истерики

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 13:28 
>>> Почти любая ошибка выдает сообщение на несколько экранов, без бутылки не разобрать про что. <<<

просто переходите на Rust


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 14:01 
>>>> Почти любая ошибка выдает сообщение на несколько экранов, без бутылки не разобрать про что. <<<
> просто переходите на Rust

когда в раст завезут ООП - плюсы можно закапывать смело


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 14:14 
>>> когда в раст завезут ООП <<<

ООП не панацея: при композиции проблем меньше чем при наследовании, так что используйте композицию + трейты и будет вам счастье!


"Результаты аудита безопасности библиотек Boost"
Отправлено Анон666 , 23-Май-24 15:24 
Ой, измученные ООП мозги исправить почти невозможно. Это как религия.

"Результаты аудита безопасности библиотек Boost"
Отправлено fuggy , 24-Май-24 03:19 
Негибкое мышление. Так нужно изучать другие технологии, не всё в одном ООП сидеть.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 16:41 
А как в этой композиции обеспечить полиморфизм? Я понимаю, что vtable можно и в плоскоСишке ручками прикрутить. Но всё придётся ручками, ручками, а не компилятору поручать. Выразительность страдает.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 17:57 
не понял вопрос, что вам нужно! для начала гляньте это и далее: https://doc.rust-lang.org/book/ch17-01-what-is-oo.html

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 14:21 
>>> плюсы можно закапывать смело <<<

Плюсы никогда не умрут, - и это факт! Раст это просто достойная альтернатива которая даёт куда больше гарантий безопастновсти чем С++! Точно также как когда-то появился С++ и он давал больше гарантий безопастности чем С! Так что глупо игнорировать эту альтернативу!


"Результаты аудита безопасности библиотек Boost"
Отправлено Анон666 , 23-Май-24 15:25 
>Плюсы никогда не умрут, - и это факт

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


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 19:36 
Да вроде фортран выбрасывать желающих нет. Именно свои задачи он хорошо выполняет.

"Результаты аудита безопасности библиотек Boost"
Отправлено 12yoexpert , 23-Май-24 14:25 
шаблоны с синтаксисом раст? лучше сразу застрелиться

"Результаты аудита безопасности библиотек Boost"
Отправлено nox. , 23-Май-24 17:28 
Rust в Qt уже поддерживается? Нет? Как будет, проинформируйте.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 17:45 
>>>  Rust в Qt уже поддерживается? Нет? Как будет, проинформируйте. <<<

Cкажем Rust появился в 2015, а С++ в 1985, - вы ведь понимаете что у С++ фора в 30 лет; а теперь представьте какая экосистема будет у Раста через эти самые 30 лет; так что будьте реалистом - всему своё время!


"Результаты аудита безопасности библиотек Boost"
Отправлено nox. , 23-Май-24 20:35 
Короче, "Либо падишах помрет, либо ишак сдохнет" (с) Ходжа Насреддин. Я точно не доживу.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 21:04 
Не через 30, а может через 10 появится новый "революцинный" язык... Уже появились и не один.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 10:45 
Сразу пишите - 20 лет. Чтобы денег дали, а проверять не пришли.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 22:30 
А кто вообще кутэ поддерживает нормально кроме сишки? Только не надо про pyqt, на нем живых проектов целых полтора.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 13:33 
>>> Средство должно помогать в работе а не доводить до истерики  <<<

Именно поэтому новичкам (да и не только новичкам) нравится Rust где компилятор это как чувак который сидит с тобой за одним столом и говорит тебе что не так, где именно и как это исправить: С++ до такого как до луны!


"Результаты аудита безопасности библиотек Boost"
Отправлено eugene_martein , 23-Май-24 16:12 
В чём проблема прописать ключи компиляции -Wall -Wextra -Wpedantic -Werror и поверх clang-tidy c включённым core guidelines и bugprone-* ? Всё будет ещё круче, чем в Rust, но ты не умеешь в это.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 16:40 
Проблема в том, что всё что ты предлагаешь, это куча эвристик, которые ничего не гарантируют. Rust формально доказывает свои гарантии. Все его ограничения накладываемые на safe код, это заявка на то, чтобы войти в разряд языков, позволяющих формально доказывать спецификации, но не факт, что она будет принята: раст доказывает не всё, лишь то, что можно описать его системой типов, что с одной стороны минус, с другой стороны это компромисс, который позволяет всё же писать программы на нём.

Rust позволяет больше чем C++ из коробки, и есть десятки проектов, которые пытаются полную формальную верификацию приделать сверху. С идеями типа вот пишешь ты в коде assert, а тебе IDE подчёркивает его зелёным, потому что удалось формально доказать, что он никогда не выстрелит. Или формальные доказательства unsafe кода на соблюдение инвариантов.

И тут ты такой с пачкой эвристик... Ты бы ещё AI предложил бы задействовать для проверки кода на безбажность.


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 17:35 
>>> -Wall -Wextra -Wpedantic -Werror и поверх clang-tidy c включённым core guidelines <<<

в расте лайфтаймы и борроу чекер всё разрулят - аналога этому в С++ просто нет - (некоторые конечно пытаются прикрутить сбоку бантик) - но пока это всё не то!


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 19:26 
Раз проблемы нет, то объясни тогда, почему в наблюдаемой реальности мало кто так делает? Тем более, если таким образом «всё будет ещё круче»?

"Результаты аудита безопасности библиотек Boost"
Отправлено наука_кандидатов , 24-Май-24 17:05 
Сам-то давно так делал? С включенным clang-tidy в принципе невозможно что либо скомпилировать. Орёт ошибками на всё подряд, делаешь по-другому, всё равно орёт.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 14:00 
Тут проблема не в конкретной библиотеке шаблонов. STL тоже хорошо вываливает тонны на экран. Проблема в реализации шаблонной подсистемы в C++. Подозреваю, что реализовано отчасти всё на том же унаследованном старом "добром" препроцессоре.

"Результаты аудита безопасности библиотек Boost"
Отправлено sabudilovskiy , 23-Май-24 16:14 
> Тут проблема не в конкретной библиотеке шаблонов. STL тоже хорошо вываливает тонны
> на экран. Проблема в реализации шаблонной подсистемы в C++. Подозреваю, что
> реализовано отчасти всё на том же унаследованном старом "добром" препроцессоре.

Ложь.

auto SomeFoo(auto x, auto y){
    return x * y + (x + y);
}

Препроцессор ничего не знает о языке. Система шаблонов построена на статическом анализе и гигантском полиморфизме.


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 16:32 
Я сказал предполагаю, а не утверждаю. Но то, что и STL, мягко говоря, не отличается внятностью сообщений о проблемах, это точно.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 16:50 
Это именно что препроцессор. C++, например, не может проверить эту функцию, насколько она не нарушает установленных правил, пока в неё не будут подставлены конкретные типы, и потом лололо ошибки полезут из этой функции, а не в том месте, где кто-то в качестве аргументов передал значения, для которых операторы + и * не реализованы. Ошибка не в том месте, где кто-то вызвал функцию с неподходящими аргументами, а внутри этой функции, где-то в недрах библиотеки, о которой ты никогда не слышал. Это чистой воды поведение макросов, это именно то за что макросы очень не любят все поголовно, даже те кто ими довольно свободно пользуется: библиотечный код прекращает быть поверхностью API, теперь надо нырять под этот API, и выяснять как оно там работает и почему это оно не принимает аргументы.

Но в C++ на этом принципе вся система типов выстроена. Слово template если ты поинтересуешься переводом, говорит о том же -- это не отсылка к типам переменных, это шаблоны для кода. Но если в нормальных языках, шаблоны для кода называются макросами, то C++ чего-то попутал, и решил что это про типы.

> Препроцессор ничего не знает о языке.

Сишный препроцессор ничего не знает. Но он такой уникальный. Нормальные макроязыки знают о языке немало, отличают статически известные константы, от выражений, чьё значение можно только в рантайме узнать.


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 16:01 
> без бутылки не разобрать про что

Поздравляем, вы постигли тонкости програмизма


"Результаты аудита безопасности библиотек Boost"
Отправлено ZloySergant , 23-Май-24 17:25 
>Буст не нужен. Почти любая ошибка выдает сообщение на несколько экранов, без бутылки не разобрать про что. Средство должно помогать в работе а не доводить до истерики

Думать головой не пробовал?


"Результаты аудита безопасности библиотек Boost"
Отправлено nox. , 23-Май-24 17:29 
> Буст не нужен.

У нас говорили: "Не нравится - сделай лучше".


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 09:47 
Там ещё говорили: "Ешь что дают" и просовывали тебе это на лопате.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 18:13 
Будто в остальных плюcах как-то иначе. Когда наконец таки везде прикрутят концепты, то мб станет лучше

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 23-Май-24 19:12 
>Когда наконец таки везде прикрутят концепты, то мб станет лучше

Ага, "потерпите немножко". Вот-вот станет лучше, вы только маленько потерпите.


"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 09:48 
Ну все пойдем на руст, много уже на нём написали?

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 14:37 
Оно и так стало лучше уже сейчас, если сравнивать с комиляторами 10-15 летней давности. Но этого мало и процесс улучшения плюсов как раз последние лет 15 идёт достаточно бодро

"Результаты аудита безопасности библиотек Boost"
Отправлено InuYasha , 24-Май-24 14:17 
Не пользуюсь, но уважаю.
Это настолько гигантский и сложный проект, что это найденный пяток проблем - просто смешно ) Я реально в шоке от такого высокого качества кода.

"Результаты аудита безопасности библиотек Boost"
Отправлено Аноним , 24-Май-24 15:17 
с чего ты взял, что проверили каждую строчку? стат.анализатор показал несколько проблем, вот за них и уцепились, чтобы отработать оплаченное

"Результаты аудита безопасности библиотек Boost"
Отправлено InuYasha , 29-Май-24 10:37 
с чего ты взял, что я считаю что проверили каждую строчку?