![]() |
#1
|
|||
|
|||
![]()
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 |