mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-10-10 00:25:06 -04:00
When compiled -fsanitize=undefined nasm produced this error message: asm/preproc.c:2523:25: runtime error: member access within null pointer of type 'struct Token' The problem is reproducible on tests avx512f, avx512cd, avx512pf and avx512er in the test suite. The problematic line was: /* Advance to the next comma */ maybe_comma = &t->next; <<< HERE while (tok_isnt(t, ',')) { if (!tok_white(t)) comma = NULL; /* Non-empty parameter */ maybe_comma = &t->next; t = t->next; } When t is NULL this line doesn't cause memory access, but it is still an undefined behavior according to C standard. I believe that the underlying problem is that this loop doesn't have a sound invariant about maybe_comma: * On first iteration: *maybe_comma == t->next * On the following iterations: *maybe_comma == t I don't know what the intended loop invariant is and I decided to just mechanically fix the deferencing of NULL pointer, completely preserving the existing behavior. Signed-off-by: Ivan Sorokin <vanyacpp@gmail.com>