fix memory leak of %rep mmacro#73
Open
sorokin wants to merge 1 commit intonetwide-assembler:masterfrom
Open
Conversation
When running with -fsanitize=leak enabled nasm prints this error:
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 <vanyacpp@gmail.com>
Member
|
Is this still a problem? |
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When running with
-fsanitize=leakenabled nasm prints this error:This error is reproducible on
lnxlinux.asmtest or on this small snippet:The original call to free_mmacro was commented out in
91e72409bec0910456e1c34457a04ca00e2f7b99as it caused use-after-free. https://bugzilla.nasm.us/show_bug.cgi?id=3392414After adding
free_mmacroI tested nasm with-fsanitize=addresson 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.