aboutsummaryrefslogtreecommitdiff
path: root/hw/elf_ops.h
diff options
context:
space:
mode:
Diffstat (limited to 'hw/elf_ops.h')
-rw-r--r--hw/elf_ops.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/hw/elf_ops.h b/hw/elf_ops.h
index 6093deaa73..14b9ec0444 100644
--- a/hw/elf_ops.h
+++ b/hw/elf_ops.h
@@ -149,9 +149,14 @@ static int glue(load_symbols, SZ)(struct elfhdr *ehdr, int fd, int must_swab,
}
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)