https://sourceware.org/bugzilla/show_bug.cgi?id=31843
Bug ID: 31843
Summary: Segfault in objdump (bfd_get_section_contents)
Product: binutils
Version: 2.42
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: binutils
Assignee: unassigned at sourceware dot org
Reporter: g.priamo at diag dot uniroma1.it
Target Milestone: ---
Created attachment 15563
--> https://sourceware.org/bugzilla/attachment.cgi?id=15563&action=edit
Testcase
### Describe the bug
AddressSanitizer: SEGV on unknown address in objdump
(`bfd_get_section_contents`).
### To Reproduce
Cloned binutils from git://sourceware.org/git/binutils-gdb.git and built
version 2.42.50.20240604 (the crash reproduces also on release 2.42) taking
inspiration from the build script in
[oss-fuzz](https://github.com/google/oss-fuzz/blob/master/projects/binutils/build.sh):
```
export CFLAGS="-O0 -g -fno-omit-frame-pointer -fno-function-sections
-fno-unique-section-names -fsanitize=address"
cd binutils
sed -i 's/vfprintf (stderr/\/\//' elfcomm.c
sed -i 's/fprintf (stderr/\/\//' elfcomm.c
cd ../
./configure --disable-gdb --disable-gdbserver --disable-gdbsupport \
--disable-libdecnumber --disable-readline --disable-sim \
--disable-libbacktrace --disable-gas --disable-ld --disable-werror
\
--enable-targets=all
make clean
make MAKEINFO=true && true
```
The crash also reproduces with this simpler build configuration:
```
./configure --enable-targets=all
make
```
### ASAN Output
```
./objdump -S testcase
testcase: file format elf64-nfp
./objdump: testcase: invalid string offset 1751545201 >= 20 for section `''
./objdump: testcase: invalid string offset 906572078 >= 20 for section `''
./objdump: testcase: invalid string offset 738812268 >= 20 for section `''
./objdump: testcase: invalid string offset 154553390 >= 20 for section `''
./objdump: testcase: invalid string offset 1902390537 >= 20 for section `''
./objdump: testcase: invalid string offset 1764426094 >= 20 for section `''
./objdump: testcase: invalid string offset 1802926173 >= 20 for section `''
./objdump: testcase: invalid string offset 23489141 >= 20 for section `''
Disassembly of section .text:
0001000000000000 <.text>:
AddressSanitizer:DEADLYSIGNAL
=================================================================
==560100==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000024 (pc
0x000000b7eda4 bp 0x7fffb04a3210 sp 0x7fffb04a3170 T0)
==560100==The signal is caused by a READ memory access.
==560100==Hint: address points to the zero page.
#0 0xb7eda4 in bfd_get_section_contents bfd/section.c:1568:16
#1 0x93b084 in init_nfp3200_priv opcodes/nfp-dis.c:2578:12
#2 0x937339 in init_nfp_priv opcodes/nfp-dis.c:2783:13
#3 0x935fb4 in _print_instrs opcodes/nfp-dis.c:2803:25
#4 0x935a8a in print_insn_nfp opcodes/nfp-dis.c:2973:9
#5 0x4e9d72 in disassemble_bytes binutils/./objdump.c:3509:20
#6 0x4e210b in disassemble_section binutils/./objdump.c:4116:4
#7 0xb7e6aa in bfd_map_over_sections bfd/section.c:1387:5
#8 0x4d87e3 in disassemble_data binutils/./objdump.c:4264:3
#9 0x4d3c23 in dump_bfd binutils/./objdump.c:5791:2
#10 0x4d2cdf in display_object_bfd binutils/./objdump.c:5852:7
#11 0x4d2be0 in display_any_bfd binutils/./objdump.c:5939:5
#12 0x4d19dc in display_file binutils/./objdump.c:5960:3
#13 0x4d0006 in main binutils/./objdump.c:6377:6
#14 0x7f624bf48082 in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x24082)
#15 0x41d6ad in _start (objdump+0x41d6ad)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV bfd/section.c:1568:16 in
bfd_get_section_contents
==560100==ABORTING
```
### Environment info
`uname -a` output: Linux ThinkPad 5.15.0-107-generic #117~20.04.1-Ubuntu SMP
Tue Apr 30 10:35:57 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
### Testcase
See attached testcase file
--
You are receiving this mail because:
You are on the CC list for the bug.