Skip to content

Commit a8ef28f

Browse files
committed
fix leaked token text
When running with -fsanitize=leak enabled nasm prints this error: Direct leak of 3795 byte(s) in 5 object(s) allocated from: #0 0x7f1ff9313867 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145 netwide-assembler#1 0x56000dc80bc4 in nasm_malloc nasmlib/alloc.c:55 netwide-assembler#2 0x56000dcd526b in new_Token asm/preproc.c:1879 netwide-assembler#3 0x56000dcd4667 in tokenize asm/preproc.c:1748 netwide-assembler#4 0x56000dd0809f in pp_tokline asm/preproc.c:7718 netwide-assembler#5 0x56000dd09715 in pp_getline asm/preproc.c:7834 netwide-assembler#6 0x56000dc7c63c in assemble_file asm/nasm.c:1722 netwide-assembler#7 0x56000dc754e4 in main asm/nasm.c:719 netwide-assembler#8 0x7f1ff8a2bd8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58 netwide-assembler#9 0x7f1ff8a2be3f in __libc_start_main_impl ../csu/libc-start.c:392 netwide-assembler#10 0x56000dc70e04 in _start (/home/ivan/d/nasm/nasm+0x2e2e04) This error was reproducible on testnos3.asm test. Signed-off-by: Ivan Sorokin <[email protected]>
1 parent a916e41 commit a8ef28f

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

asm/preproc.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1811,6 +1811,9 @@ static Token *delete_Token(Token *t)
18111811
nasm_assert(t && t->type != TOKEN_FREE);
18121812

18131813
next = t->next;
1814+
1815+
if (t->len > INLINE_TEXT)
1816+
nasm_free(t->text.p.ptr);
18141817
nasm_zero(*t);
18151818
t->type = TOKEN_FREE;
18161819
t->next = freeTokens;

0 commit comments

Comments
 (0)