libbacktrace: don't crash if ELF file has no sections
authorIan Lance Taylor <iant@golang.org>
Sun, 10 May 2020 03:34:25 +0000 (20:34 -0700)
committerIan Lance Taylor <iant@golang.org>
Sun, 10 May 2020 03:34:25 +0000 (20:34 -0700)
libbacktrace/
* elf.c (elf_add): Bail early if there are no section headers at all.

libbacktrace/ChangeLog
libbacktrace/elf.c

index 13d907011d8e2c47c9e4108166c3f1e74d5c90ca..88dee9983d3b198c929e882b48b302d037c1ca46 100644 (file)
@@ -1,3 +1,7 @@
+2020-05-09  Roland McGrath  <mcgrathr@google.com>
+
+       * elf.c (elf_add): Bail early if there are no section headers at all.
+
 2020-05-09  Ian Lance Taylor  <iant@golang.org>
 
        * elf.c (elf_add): Don't free strtab if an error occurs after
index 1216af86fd9c8c11bb751b558622fb6cbc911e38..80a00506bd6186a758abc9a3327d5a0abf271a4b 100644 (file)
@@ -2781,6 +2781,9 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor,
       backtrace_release_view (state, &shdr_view, error_callback, data);
     }
 
+  if (shnum == 0 || shstrndx == 0)
+    goto fail;
+
   /* To translate PC to file/line when using DWARF, we need to find
      the .debug_info and .debug_line sections.  */