readelf, libdw: Handle too many directories or files in the line table better.
authorMark Wielaard <mark@klomp.org>
Fri, 8 Jun 2018 12:04:40 +0000 (14:04 +0200)
committerMark Wielaard <mark@klomp.org>
Sun, 10 Jun 2018 15:02:22 +0000 (17:02 +0200)
commit7e30fb282d32fe3e082f66c936db4b2988c290dc
treed84c685f4088247d5d3d8c87a76f1c54f6190f29
parentc5fdb8e5e0be9a507766a58f3c27c57703f369a9
readelf, libdw: Handle too many directories or files in the line table better.

The afl fuzzer found that the way we handle "too many" directories or files
in the (DWARF5 style) line table badly. In the case of eu-readelf we would
print an endless stream of "bad directory" or "bad file". Just stop printing
when the end of data is reached. In the case of dwarf_getsrclines we would
allocate a giant amount of memory, even if there was no data to actually
read in. Sanity check that the directory and file counts seem reasonable
compared to the amount of data left (assume we need at least 1 byte of
data per form describing the dirs or files).

Signed-off-by: Mark Wielaard <mark@klomp.org>
libdw/ChangeLog
libdw/dwarf_getsrclines.c
src/ChangeLog
src/readelf.c