forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.HUSKY

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 30.04.2021, 10:32
Nil Alexandrov
Guest
 
Сообщений: n/a
По умолчанию Падение в createPathArrayFromMsg()

Nil Alexandrov написал(а) к All в Apr 21 09:03:32 по местному времени:

Нello, All!

Имеется битый pkt со следующим телом (pkt сгенировала американская фазилка afl++):

=== START ===
AREA:TEST.LOCAL
test
+ Origin: Origin (2:5020/9999.0)
SEEN+BY: 5020/9999
PATН: 50
=== END ===

Внутри фунции hpt/src/seenby.c: createPathArrayFromMsg() ведётся подсчёт seenByCount, но как только мы попадаем в блок
375 else
376 {
377 wlog(LLALERT,
378 "Buggy PATН line encountered. Invalid node was removed from the line!");
379 --*seenByCount;
380 }

то мы декрементим seenByCount, после чего он становится равным нулю, и так и уходит в safe_realloc(0, ...)
399 (seenBys) = (sseenBy *)safe_realloc(*seenBys, sizeof(sseenBy) * (seenByCount));

после чего имеем двойное освобождение памяти, что есть UB.
==1338638==ERROR: AddressSanitizer: attempting double-free on 0x60c000003b80 in thread T0:
#0 0x55555567f65f in free (/home/nil/husky/build.asan/hpt/hpt+0x12b65f)
#1 0x5555556d57a1 in safe_realloc /home/nil/husky/hpt/src/fcommon.c:782
#2 0x55555570bbd4 in createPathArrayFromMsg /home/nil/husky/hpt/src/seenby.c:399
#3 0x5555556dd6bd in forwardMsgToLinks /home/nil/husky/hpt/src/toss.c:827
#4 0x5555556e2ebd in processEMMsg /home/nil/husky/hpt/src/toss.c:1430
#5 0x5555556e4d2a in processMsg /home/nil/husky/hpt/src/toss.c:1723
#6 0x5555556e61a8 in processPkt /home/nil/husky/hpt/src/toss.c:1926
#7 0x5555556e85c5 in processDir /home/nil/husky/hpt/src/toss.c:2368
#8 0x5555556edc57 in toss /home/nil/husky/hpt/src/toss.c:3357
#9 0x5555556c66f1 in main /home/nil/husky/hpt/src/hpt.c:1039
#10 0x7ffff78f50b2 in _libc_start_main (/lib/x8664-linux-gnu/libc.so.6+0x270b2)
#11 0x555555594a0d in _start (/home/nil/husky/build.asan/hpt/hpt+0x40a0d)

Best Regards, Nil
--- GoldED+/LNX 1.1.5
Ответить с цитированием
  #2  
Старый 03.05.2021, 23:03
Michael Dukelsky
Guest
 
Сообщений: n/a
По умолчанию Падение в createPathArrayFromMsg()

Michael Dukelsky написал(а) к Nil Alexandrov в May 21 19:45:46 по местному времени:

Привет, Nil!

30 April 2021 09:03, Nil Alexandrov послал(а) письмо к All:

NA> Имеется битый pkt со следующим телом (pkt сгенировала американская
NA> фазилка afl++):

NA> === START ===
NA> AREA:TEST.LOCAL
NA> test
NA> + Origin: Origin (2:5020/9999.0)
NA> SEEN+BY: 5020/9999
NA> PATН: 50
NA> === END ===

NA> Внутри фунции hpt/src/seenby.c: createPathArrayFromMsg() ведётся
NA> подсчёт seenByCount, но как только мы попадаем в блок 375 else 376
NA> { 377 wlog(LLALERT, 378 "Buggy PATН line encountered.
NA> Invalid node was removed from the line!"); 379 --*seenByCount; 380
NA> }

NA> то мы декрементим seenByCount, после чего он становится равным нулю, и
NA> так и уходит в saferealloc(0, ...) 399 (*seenBys) = (sseenBy
NA> )saferealloc(*seenBys, sizeof(sseenBy) * (seenByCount));

NA> после чего имеем двойное освобождение памяти, что есть UB.

Спасибо, исправил.

Желаю успехов, Nil!
За сим откланиваюсь, Michael.

... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20180707
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 12:50. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot