According to C99, realloc(non_null, 0) != free(non_null), that's why
it is forbidden in QEMU.
When there are no symbols, nsyms equals to 0. Free the syms structure
and set it to NULL instead of reallocating it with a size of 0.
This fixes -kernel with stripped kernels.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
}
i++;
}
- syms = qemu_realloc(syms, nsyms * sizeof(*syms));
+ if (nsyms) {
+ syms = qemu_realloc(syms, nsyms * sizeof(*syms));
- qsort(syms, nsyms, sizeof(*syms), glue(symcmp, SZ));
+ qsort(syms, nsyms, sizeof(*syms), glue(symcmp, SZ));
+ } else {
+ qemu_free(syms);
+ syms = NULL;
+ }
/* String table */
if (symtab->sh_link >= ehdr->e_shnum)