Hello,

I found a crash bug which causes segmentation fault when objdump -x tries
to print
header information of the attached file. This bug was found by CONCERT, an
automated
unit testing generation tool developed by my colleague and me.

*** Configuration and build option ***
$ ./configure CFLAGS="-fsanitize=address" && make -j4

I am using Debian 8.1 on x64 and gcc 4.9.2.

*** Command that causes a crash ***
$ ~/binutils-2.25.1/binutils/objdump -x objdump_crash
objdump_crash:     file format elf64-x86-64
objdump_crash
architecture: i386:x86-64, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x00000000004003c0

Program Header:
... omitted program header

Version definitions:
Segmentation fault

Segmentation fault happens at 'fprintf' called at bfd/elf.c:1397

bfd/elf.c
 1395       for (t = elf_tdata (abfd)->verdef; t != NULL; t = t->vd_nextdef)
 1396     {
 1397       fprintf (f, "%d 0x%2.2x 0x%8.8lx %s\n", t->vd_ndx,
 1398            t->vd_flags, t->vd_hash,
 1399            t->vd_nodename ? t->vd_nodename : "<corrupt>");

t->vd_nodename (line 1399) has a suspect memory address, This is because
t->vd_nodename
is not initialized at the function _bfd_elf_slurp_version_tables() (in
elf.c) when the 2nd parameter
of _bfd_elf_slurp_version_tables is given as false and iverdef->vd_cnt is 0
at elf.c:7561

If you need more details or any other information, please let me know.

Thanks.

-- 
Best Regards,
Yunho Kim

---------------------------------------------
Yunho Kim, Ph.D candidate
Rm# 2438 CS Dept. KAIST
373-1 Guseong-dong, Yuseong-gu
Daejeon, South Korea (305-701)
Phone:+82-42-350-7743
Fax:+82-42-350-3510
---------------------------------------------

Attachment: objdump_crash
Description: Binary data

_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to