summary refs log tree commit diff stats
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)