Skip to content

preproc: fix misparsing of << as right shift #15

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 22, 2021

Conversation

astiob
Copy link
Contributor

@astiob astiob commented Sep 18, 2021

Regression in commit 20e0d61.

Independently discovered and fixed by C. Masloch at https://bugzilla.nasm.us/show_bug.cgi?id=3392747 (as I learned once I had finished my own investigation and rechecked the Bugzilla with specific keywords in mind), but the patch never made it to the Git repository.

This seems like an obvious and clearly benevolent patch, so I’d love to see this merged soon.

For what it’s worth, like C. Masloch, I have also not spotted any other yet-unfixed problems in that commit, but I’m not at all versed in NASM internals. (I did notice that LPAR and RPAR had swapped names, but that’s already fixed in master.)

Fixes the samples in https://bugzilla.nasm.us/show_bug.cgi?id=3392747.
Fixes libass build as reported in libass/libass#552.

@cyrillos
Copy link
Member

Hi! Thanks a huge for the fix. Could you please update your commit and add Signed-off-by tag there, as described in https://nasm.us/patches.php

Regression in commit 20e0d61.

Independently discovered and fixed by C. Masloch:
https://bugzilla.nasm.us/show_bug.cgi?id=3392747

Signed-off-by: Oleg Oshmyan <chortos@inbox.lv>
@astiob
Copy link
Contributor Author

astiob commented Sep 21, 2021

Done.

@cyrillos cyrillos merged commit 3a81150 into netwide-assembler:master Sep 22, 2021
@astiob
Copy link
Contributor Author

astiob commented Sep 22, 2021

Thank you!

I assume https://bugzilla.nasm.us/show_bug.cgi?id=3392747 can now be marked fixed.

@astiob astiob deleted the libass branch September 22, 2021 23:39
sorokin added a commit to sorokin/nasm that referenced this pull request Feb 26, 2023
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
    netwide-assembler#1 0x5645d39a401c in nasm_malloc nasmlib/alloc.c:55
    netwide-assembler#2 0x5645d3a41f9d in string_transform asm/strfunc.c:356
    netwide-assembler#3 0x5645d3a37d40 in eval_strfunc asm/eval.c:761
    netwide-assembler#4 0x5645d3a37d40 in expr6 asm/eval.c:906
    netwide-assembler#5 0x5645d3a3968d in expr5 asm/eval.c:627
    netwide-assembler#6 0x5645d3a39aca in expr4 asm/eval.c:602
    netwide-assembler#7 0x5645d3a39b72 in expr3 asm/eval.c:563
    netwide-assembler#8 0x5645d3a39db8 in expr2 asm/eval.c:537
    netwide-assembler#9 0x5645d3a39f38 in expr1 asm/eval.c:511
    netwide-assembler#10 0x5645d3a3a0b8 in expr0 asm/eval.c:485
    netwide-assembler#11 0x5645d3a3a242 in rexp3 asm/eval.c:422
    netwide-assembler#12 0x5645d3a3a508 in rexp2 asm/eval.c:396
    netwide-assembler#13 0x5645d3a3a6a8 in rexp1 asm/eval.c:369
    netwide-assembler#14 0x5645d3a3a838 in rexp0 asm/eval.c:342
    netwide-assembler#15 0x5645d3a3a838 in cexpr asm/eval.c:305
    netwide-assembler#16 0x5645d3a3ad08 in bexpr asm/eval.c:298
    netwide-assembler#17 0x5645d3a3ad08 in evaluate asm/eval.c:1032
    netwide-assembler#18 0x5645d39e4f20 in parse_line asm/parser.c:959
    netwide-assembler#19 0x5645d399e243 in assemble_file asm/nasm.c:1735
    netwide-assembler#20 0x5645d3998801 in main asm/nasm.c:719
    netwide-assembler#21 0x7faee8aaed8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    netwide-assembler#22 0x7faee8aaee3f in __libc_start_main_impl ../csu/libc-start.c:392
    netwide-assembler#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.
sorokin added a commit to sorokin/nasm that referenced this pull request Mar 5, 2023
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
    netwide-assembler#1 0x5645d39a401c in nasm_malloc nasmlib/alloc.c:55
    netwide-assembler#2 0x5645d3a41f9d in string_transform asm/strfunc.c:356
    netwide-assembler#3 0x5645d3a37d40 in eval_strfunc asm/eval.c:761
    netwide-assembler#4 0x5645d3a37d40 in expr6 asm/eval.c:906
    netwide-assembler#5 0x5645d3a3968d in expr5 asm/eval.c:627
    netwide-assembler#6 0x5645d3a39aca in expr4 asm/eval.c:602
    netwide-assembler#7 0x5645d3a39b72 in expr3 asm/eval.c:563
    netwide-assembler#8 0x5645d3a39db8 in expr2 asm/eval.c:537
    netwide-assembler#9 0x5645d3a39f38 in expr1 asm/eval.c:511
    netwide-assembler#10 0x5645d3a3a0b8 in expr0 asm/eval.c:485
    netwide-assembler#11 0x5645d3a3a242 in rexp3 asm/eval.c:422
    netwide-assembler#12 0x5645d3a3a508 in rexp2 asm/eval.c:396
    netwide-assembler#13 0x5645d3a3a6a8 in rexp1 asm/eval.c:369
    netwide-assembler#14 0x5645d3a3a838 in rexp0 asm/eval.c:342
    netwide-assembler#15 0x5645d3a3a838 in cexpr asm/eval.c:305
    netwide-assembler#16 0x5645d3a3ad08 in bexpr asm/eval.c:298
    netwide-assembler#17 0x5645d3a3ad08 in evaluate asm/eval.c:1032
    netwide-assembler#18 0x5645d39e4f20 in parse_line asm/parser.c:959
    netwide-assembler#19 0x5645d399e243 in assemble_file asm/nasm.c:1735
    netwide-assembler#20 0x5645d3998801 in main asm/nasm.c:719
    netwide-assembler#21 0x7faee8aaed8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    netwide-assembler#22 0x7faee8aaee3f in __libc_start_main_impl ../csu/libc-start.c:392
    netwide-assembler#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 <vanyacpp@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants