Commit ad29725
fix memory leak in eval_strfunc
When running with -fsanitize=leak enabled nasm prints this error:
==19965==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 360 byte(s) in 90 object(s) allocated from:
#0 0x7faee9396867 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
#1 0x5645d39a401c in nasm_malloc nasmlib/alloc.c:55
#2 0x5645d3a41f9d in string_transform asm/strfunc.c:356
#3 0x5645d3a37d40 in eval_strfunc asm/eval.c:761
#4 0x5645d3a37d40 in expr6 asm/eval.c:906
#5 0x5645d3a3968d in expr5 asm/eval.c:627
#6 0x5645d3a39aca in expr4 asm/eval.c:602
#7 0x5645d3a39b72 in expr3 asm/eval.c:563
#8 0x5645d3a39db8 in expr2 asm/eval.c:537
#9 0x5645d3a39f38 in expr1 asm/eval.c:511
#10 0x5645d3a3a0b8 in expr0 asm/eval.c:485
#11 0x5645d3a3a242 in rexp3 asm/eval.c:422
#12 0x5645d3a3a508 in rexp2 asm/eval.c:396
#13 0x5645d3a3a6a8 in rexp1 asm/eval.c:369
#14 0x5645d3a3a838 in rexp0 asm/eval.c:342
#15 0x5645d3a3a838 in cexpr asm/eval.c:305
#16 0x5645d3a3ad08 in bexpr asm/eval.c:298
#17 0x5645d3a3ad08 in evaluate asm/eval.c:1032
#18 0x5645d39e4f20 in parse_line asm/parser.c:959
#19 0x5645d399e243 in assemble_file asm/nasm.c:1735
#20 0x5645d3998801 in main asm/nasm.c:719
#21 0x7faee8aaed8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
#22 0x7faee8aaee3f in __libc_start_main_impl ../csu/libc-start.c:392
#23 0x5645d399acd4 in _start (/home/ivan/d/nasm/nasm+0x2e5cd4)
SUMMARY: AddressSanitizer: 360 byte(s) leaked in 90 allocation(s).
This problem is reproducible on test utf.asm.
The problem was caused by the fact that eval_strfunc doesn't free the string
allocated by string_transform.
Signed-off-by: Ivan Sorokin <[email protected]>1 parent fc720e7 commit ad29725
1 file changed
+1
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
736 | 736 | | |
737 | 737 | | |
738 | 738 | | |
| 739 | + | |
739 | 740 | | |
740 | 741 | | |
741 | 742 | | |
| |||
0 commit comments