aboutsummaryrefslogtreecommitdiff
path: root/binutils/coffdump.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-01-31 00:53:59 +1030
committerAlan Modra <amodra@gmail.com>2020-01-31 10:47:46 +1030
commit327301a4604da40da264c554daa8c1e97aa2fbe2 (patch)
treed9d457d95ef8aa4b6feae4e79d8bc088167e5b5c /binutils/coffdump.c
parentde08f22743d4a2d4175f785cbf291f16ecd58dc8 (diff)
downloadgdb-327301a4604da40da264c554daa8c1e97aa2fbe2.zip
gdb-327301a4604da40da264c554daa8c1e97aa2fbe2.tar.gz
gdb-327301a4604da40da264c554daa8c1e97aa2fbe2.tar.bz2
OOM in setup_group
We alloc, seek and read using section sizes in object files. Fuzzed objects can have silly sizes, but that's OK if the system supports memory over-commit. The read fails because we hit EOF and that usually results in a graceful exit. But if we memset before the read then the invalid size results in attempting to write to a huge number of memory pages, and an eventual Out Of Memory after probably swapping like crazy. So don't memset. There really isn't a need to clear the section contents anyway. All bytes are written with a good object file by the read and following loop converting section index in target order to ELF section header pointer, and the only untidy bytes are the 4 bytes past the group flags when pointers are 8 bytes. Those don't matter but the patch clears them for anyone poking around in a debugger. On error paths it's as good to free section contents as it is to clear them. Noticed when looking at PR4110 fourth test case. PR 4110 * elf.c (setup_group): Don't clear entire section contents, just the padding after group flags. Release alloc'd memory after a seek or read failure.
Diffstat (limited to 'binutils/coffdump.c')
0 files changed, 0 insertions, 0 deletions