<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/86611>86611</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            llvm-objdump: corrupt ELF file can crash llvm-objdump in printSymbolVersionDefinition()
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            tools:llvm-objdump,
            crash-on-invalid
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          emaste
      </td>
    </tr>
</table>

<pre>
    Reported against FreeBSD in https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277861, with ELF reproducer attached

```
# objdump --version
LLVM (http://llvm.org/):
  LLVM version 17.0.6
  Optimized build with assertions.
...
# objdump -p objdump2a.exe

objdump2a.exe:  file format elf32-lanai

Program Header:
objdump: warning: 'objdump2a.exe': section [index 7] has invalid sh_entsize: expected 8, but got 5

Version definitions:
1 0x00 0x7650bc00 PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace.
Stack dump:
0.      Program arguments: objdump -p objdump2a.exe
 #0 0x0000000001230c41 PrintStackTrace /usr/src/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:602:13
 #1 0x000000000122f0b5 RunSignalHandlers /usr/src/contrib/llvm-project/llvm/lib/Support/Signals.cpp:105:18
 #2 0x0000000001231365 SignalHandler /usr/src/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:0:3
 #3 0x00000008255ae5ff handle_signal /usr/src/lib/libthr/thread/thr_sig.c:0:3
 #4 0x00000008255adbbb thr_sighandler /usr/src/lib/libthr/thread/thr_sig.c:244:1
 #5 0x00000008223cd2d3 ([vdso]+0x2d3)
 #6 0x0000000000de60d7 read<unsigned int, 1UL> /usr/src/contrib/llvm-project/llvm/include/llvm/Support/Endian.h:66:3
 #7 0x0000000000de60d7 read<unsigned int, (llvm::support::endianness)1, 1UL> /usr/src/contrib/llvm-project/llvm/include/llvm/Support/Endian.h:77:10
 #8 0x0000000000de60d7 operator unsigned int /usr/src/contrib/llvm-project/llvm/include/llvm/Support/Endian.h:216:12
 #9 0x0000000000de60d7 printSymbolVersionDefinition<llvm::object::ELFType<(llvm::support::endianness)1, false> > /usr/src/contrib/llvm-project/llvm/tools/llvm-objdump/ELFDump.cpp:398:45
#10 0x0000000000de60d7 printSymbolVersion /usr/src/contrib/llvm-project/llvm/tools/llvm-objdump/ELFDump.cpp:425:7
#11 0x0000000000de60d7 printPrivateHeaders /usr/src/contrib/llvm-project/llvm/tools/llvm-objdump/ELFDump.cpp:432:3
#12 0x0000000000e6a13c dumpObject /usr/src/contrib/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2815:7
#13 0x0000000000e654b0 dumpInput /usr/src/contrib/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:0:5
#14 0x0000000000e654b0 for_each<std::__1::__wrap_iter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > *>, void (*)(llvm::StringRef)> /usr/obj/usr/src/amd64.amd64/tmp/usr/include/c++/v1/__algorithm/for_each.h:26:5
#15 0x0000000000e654b0 for_each<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > &, void (*)(llvm::StringRef)> /usr/src/contrib/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1731:10
#16 0x0000000000e654b0 main /usr/src/contrib/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:3248:3
#17 0x0000000828d4d0aa __libc_start1 /usr/src/lib/libc/csu/libc_start1.c:157:2
Segmentation fault (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEV0tv27oS_jX0hojAh15eeOHENs4FfHGCJqdbgyIpia0sCiTluP31F6RkW851H-lp0MBQJHLI-eab4XCGWauqVsoFSO5Bspqx3tXaLOSeWSdnhRZfFh9kp42TArKKqdY6uDFS3j-toGph7VxnAV0CsgFkU_SVjUojZWFFpE01DH1VTcMA2dhav-yKvop4pQDdKAHoimRZnmJAHuCLcjVcbzfQyM5o0XNpIHOO8VoKgFYALcdnisbf8Eko1MUn0e87eHd3kMYq3Q5T2-3H_0JAco_xDLFpDvsRGiBzPxxkIQzS43qIswhF6Wnq786pvfoqBSx61YgBKrNWGqd0a6NBLoqiG5C60ythkTzKqSXXE3QJYakaCUtt9sxB2ZSU3DWsZWq66NHoyrA9_EsyIc0Z_7iX3-WFmVa1lX8FJLtWQjI_bCX3wCFI7lUr5BFmIFnBmlmo2gNrlIC23snWWfU14JLHTnIfALl3VNE7WGkHkymsjyNxQpaqVYGWMzYM0REhiI5ZmqCCIwQft-vl0xravtgrBxks-sq7XRsHnf5xTA3rANlA1gqoWt70QkJXS8gNszUsGP_sDONydMiTY_wzHPkZhlAEw9-JTmaqfu9N9vZ-33kQEIqCSeMfJhTxGMNHo1oXdD175RCQTW-Nx2s4IBuuW2dUMcbgXWf0J8nd-On_hbmnvvM8ALL5p1VHP6CqljU2Ui0HdJkiAugS0wsUfA2FlKhI4Ie-Hdb9xVrRSGP_LZgTCt55DjFK_DO_oCCvCME0TeAVhHehAwG6nHBBLyhykiRMJmUJ66B_Z8PC1ygGLY0qXO0HXW0kE8OLXxHdUBK_UiKKooCjfH3b1p_RQuLYc3rRk0z1EMoFEdSnM5DcH4TVIFkBco-ORFCfyM7L0qknkJApEhkM-uhD34Zk78-M80cZ_7MFdP1Wz4wH7jJwcdK6FYq1Ue0jNb2mLXsDLkDysDVdArq04-7hQwYFrbQWkDl-bxuyLAT7xYj8lhG6k4Y5beDUjPcBRLBnFZMLovktRF3IRF_2hW7GxLw652VAHy7c6iKgCO_r7eb5SycBfXgL_SVrrAwOeLsTnNaNPc2ebjCyWW83q37fjbmGznNAl3Fyvlsx-jmT3wVNTHzmyy5g8DfBPBp1YE4OF_WbE_DPoaHkcsg8mqs0jGTKMOXh4vs7OPo3gZh-jkhIjl8RQ19BSeICBSj_abv-HZH4bD0JlvgWjFKbnWS8BvTBOjGE9m6HTy8vhnU75Xx5dWO-YFbxnXUmFFkPvGbGH4T_F_QzO2eY8lXFIEfXt0VZ02juc8hFcDxQy3HNQSsRsj9Z-nQ_PaFPAcoHWYaCdnIKdfHpFc1sL9I4Ck9PauBwmL_kHw7IffhtDhiQzW7Hmkob5WrvhxNzQzZKr7lO3sz1QfLB6D9K84-F_3AUnKMh_dVQ-MVLaLl69lfR83Z9dIbZ4HWcUTy5Fr3j01uO3zP1u3LwjWNOSZxf575sWi_lIhaIMbjbNarwfmLG4W-WZQGa7cePUTpUZTjxJcB43z7JyvcILDRPJesbn8Zyro0MiU2KcyF2blJnYkHFnM7ZTC5whnGM4zidz-oFyXMkc1FwlqKYIz5HWUx4hhNMioRkfKYWBJEYUZIilMRkHmFEkiymZZkiPmelBDGSe6aa6NTSzpS1vVzkaYrxrGGFbGzo6gkZaKXLa1oJIA-AkNAz3en2bmz-_ESymplFkPbtF4hRo6yzF01OuUYurrajS8i1MX3nQhcfWlnO2rElm4pC1X6_QvGhPZ_1pllct4KVcnVfRFzvJ23CdRwFCnwEBRb-FwAA___iXiem">