Add resilience for degenerate cases present in files with only debug information...
authorAudrey Dutcher <audrey@rhelmot.io>
Sat, 7 Mar 2020 13:39:13 +0000 (20:39 +0700)
committerGitHub <noreply@github.com>
Sat, 7 Mar 2020 13:39:13 +0000 (05:39 -0800)
commita3f1b7ca4423621f540a2581289ce57cb4bf3f72
tree86e95c106b17f9fa2b84ac9cdb8a5149a56fc4b3
parent85b30d248ade4530a9c3fb928f6a367f535b2ba3
Add resilience for degenerate cases present in files with only debug information (#287)

Some ELF files which contain only debug symbols have important sections present in the section table but marked as NOBITS instead of PROGBITS. Attempting to extract the segments can lead to crashes through parsing invalid data.

The first patch modifies the dynamic segment/section specifically to add a flag for this case, since it seems to assume that there will always be at least one entry, DT_NULL.

The second patch modifies the segment code more generally to return a dummy answer for what data it holds. The actual way that this change prevents a crash is while trying to parse .eh_frame when it is in fact NOBITS - originally I had a more targeted patch, but decided that it was important enough to do more generally
elftools/elf/dynamic.py
elftools/elf/sections.py
elftools/elf/structs.py
test/test_dbgfile.py [new file with mode: 0644]
test/testfiles_for_unittests/debug_info.elf [new file with mode: 0644]