elf.c: Fix NULL deref on bad xsize expression (#234)

This commit is contained in:
Peter Johnson 2023-06-30 08:08:55 -07:00 committed by GitHub
parent 4dc8c3bf03
commit 2cd3bb50e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -482,15 +482,15 @@ elf_symtab_write_to_file(FILE *f, elf_symtab_head *symtab,
/* get size (if specified); expr overrides stored integer */ /* get size (if specified); expr overrides stored integer */
if (entry->xsize) { if (entry->xsize) {
size_intn = yasm_intnum_copy( yasm_intnum *intn = yasm_expr_get_intnum(&entry->xsize, 1);
yasm_expr_get_intnum(&entry->xsize, 1)); if (!intn) {
if (!size_intn) {
yasm_error_set(YASM_ERROR_VALUE, yasm_error_set(YASM_ERROR_VALUE,
N_("size specifier not an integer expression")); N_("size specifier not an integer expression"));
yasm_errwarn_propagate(errwarns, entry->xsize->line); yasm_errwarn_propagate(errwarns, entry->xsize->line);
} } else
size_intn = yasm_intnum_copy(intn);
} }
else if (!size_intn)
size_intn = yasm_intnum_create_uint(entry->size); size_intn = yasm_intnum_create_uint(entry->size);
/* get EQU value for constants */ /* get EQU value for constants */