Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.GOLDED
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.GOLDED с датами от 16 Jul 13 03:28:02 до 25 May 24 15:53:00, всего сообщений: 3571
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 2598 из 3571 ======================================== RU.GOLDED =
От   : Nil A                            2:5015/46          12 Aug 23 08:33:52
Кому : Vitaliy Aksyonov                                    12 Aug 23 08:33:52
Тема : Golded SIGABRT
FGHI : area://RU.GOLDED?msgid=2:5015/46+64d72852
На   : area://RU.GOLDED?msgid=1:104/117+64d677f6
= Кодировка сообщения определена как: CP866 ==================================
==============================================================================
Hello, Vitaliy!

Friday August 11 2023 12:02, from Vitaliy Aksyonov -> Nil A:

NA>> Чё-то, где-то. про Скан Клуджей. Я сейчас просто тут это оставлю,
NA>> разбираться ночью с этим багом я не буду, не on-call я сегодня по
NA>> голдеду.
VA> Так неспортивно. А Steps to reproduce? Ну или корку на крайняк.

В hobbit.test эхе хулиганят, написали вот такой вот длинный ориджин

> * Origin: И стали драться Илья Муромец со змеем Горынычем и отрубил
> Муромец одну голову Змею. Но выросло у того 2. И отрубил он у змея 2
> головы, но выросло 4... и отрубил он у Горыныча 65535

и фсё, голдед на свою голую попу сел. Причём, там есть нюанс, когда билд -O0 и -O1,.. может в кору упасть, а может и не упасть, точнее в другом месте упадёт ;-)

Так то строчка выглядит норм
> strxcpy(msg->origin, line->txt.c_str()+11, sizeof(msg->origin));
Чертовски длинный ориджин лежит в стринге line->txt, msg->origin это char[160] просто.  Я уж не буду комментировать +11 отступ, чтобы пропустить " * Origin: " ;-)
Внутри strxcpy() делает strcpy() размер -1, и закрывает \0 буфер - всё вроде хорошо.



Короче, вот что я точно знаю, что Одинн Соренсен (царство ему небесное), он был кулхацкером в 90е года, когда плюсы были "Си с классами". Его хакерский стиль - это переиспользовать структурки, просто memset() затираем все поля, и дальше едем. Конструкторы/декструкторы - это для слабаков, мы сейчас сэкономим на new/delete. Окей, всё будет работать, пока у тебя структурка просто POD (типа std::is_trivial_v), но когда там добавили стринги..

А потом пришли чувачки, невкурили они идею Одинна, и втащили местами std::string с std::vector, и структурки стали уже не POD. Я как-то под valgrind запустил, и там потерянная память, потому что кулхацкер Одинн memset() затирает структурки, а стринги и вектора никто не деструктирует как положено. Короче, там где стринги и вектора, то там новодел - инфа 100%.



Да говно код вашего голдеда, вот чесно. Думал, сейчас голыми руками голдеда поймаю, собрал АСАН билд

> -fsanitize=address -fsanitize=undefined -fno-sanitize-recover=all
> -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow
> -fno-sanitize=null -fno-sanitize=alignment

и что? До списка эх не дошёл, уже арифметика указателей нитаво

> goldlib/gall/gmemdbg.cpp:130:53: runtime error: pointer index expression
> with base 0x000000000000 overflowed to 0xffffffffffffffd4
Вот тут хитро прячут структурку Throw за адресом буфера - тот ещё хак. Ну блин, не свой же кастомный маллок пишем.
> (Throw*)((const char*)ptr-sizeof(Throw)+1);

Ну окей, мне сейчас надо чисто санитайзер на адреса сделать, просто один -fsanitize=address. Опять до списка эх не дошёл.
> AddressSanitizer: alloc-dealloc-mismatch (operator new [] vs operator
> delete)

Да блин, там десятилетиями эти баги сидят, и всем пофиг. Надо прораваться дальше, запускаем с ASAN_OPTIONS=alloc_dealloc_mismatch=0 -у нас список эх уже, нажимаем клавишу названия эхи, и...
> AddressSanitizer: dynamic-stack-buffer-overflow on address 0x7ffded765a05
> at pc 0x00000071d98d bp 0x7ffded765910 sp 0x7ffded765908

Стрёмненько как-то вобщем.

Best Regards, Nil
--- GoldED+/LNX 1.1.5
* Origin: Linux 2.6.32-042stab145.3 (2:5015/46)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.035279 секунды