Commit 160b4d5
committed
fix memory leak of %rep mmacro
Direct leak of 960 byte(s) in 5 object(s) allocated from:
#0 0x7f52b6464a37 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:154
netwide-assembler#1 0x55cf36676c46 in nasm_calloc nasmlib/alloc.c:72
netwide-assembler#2 0x55cf36676cd1 in nasm_zalloc nasmlib/alloc.c:87
netwide-assembler#3 0x55cf366e3980 in do_directive asm/preproc.c:4754
netwide-assembler#4 0x55cf366fec97 in pp_tokline asm/preproc.c:7773
netwide-assembler#5 0x55cf366ff84a in pp_getline asm/preproc.c:7837
netwide-assembler#6 0x55cf3667263c in assemble_file asm/nasm.c:1722
netwide-assembler#7 0x55cf3666b4e4 in main asm/nasm.c:719
netwide-assembler#8 0x7f52b5b7cd8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
netwide-assembler#9 0x7f52b5b7ce3f in __libc_start_main_impl ../csu/libc-start.c:392
netwide-assembler#10 0x55cf36666e04 in _start (/home/ivan/d/nasm/nasm+0x2e2e04)
This error is reproducible on lnxlinux.asm test or on this
small snippet:
%rep 8
nop
nop
nop
%endrep
The original call to free_mmacro was commented out in
91e7240 as it caused
use-after-free. https://bugzilla.nasm.us/show_bug.cgi?id=3392414
After adding free_mmacro I tested nasm with -fsanitize=address
on all four reproducers attached to the issue and none of them
causes use-after-free now. Also this commit passes all tests
without causing use-after-free.
Signed-off-by: Ivan Sorokin <[email protected]>1 parent a916e41 commit 160b4d5
1 file changed
+4
-9
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7594 | 7594 | | |
7595 | 7595 | | |
7596 | 7596 | | |
| 7597 | + | |
7597 | 7598 | | |
7598 | 7599 | | |
7599 | 7600 | | |
| |||
7648 | 7649 | | |
7649 | 7650 | | |
7650 | 7651 | | |
| 7652 | + | |
| 7653 | + | |
7651 | 7654 | | |
7652 | 7655 | | |
7653 | 7656 | | |
| |||
7667 | 7670 | | |
7668 | 7671 | | |
7669 | 7672 | | |
7670 | | - | |
7671 | | - | |
7672 | | - | |
7673 | | - | |
7674 | | - | |
7675 | | - | |
7676 | | - | |
7677 | | - | |
| 7673 | + | |
7678 | 7674 | | |
7679 | | - | |
7680 | 7675 | | |
7681 | 7676 | | |
7682 | 7677 | | |
| |||
0 commit comments