diff options
author | Alan Modra <amodra@gmail.com> | 2024-05-02 19:02:48 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2024-05-02 19:07:50 +0930 |
commit | 635d05b88f4823f46ef1ddbb3d438db16c0f6e71 (patch) | |
tree | 137293c68ae553909a497208fed45548cee97ea4 /binutils | |
parent | 5ce0e02478cc79a260c7e29822450284a32b9b12 (diff) | |
download | gdb-635d05b88f4823f46ef1ddbb3d438db16c0f6e71.zip gdb-635d05b88f4823f46ef1ddbb3d438db16c0f6e71.tar.gz gdb-635d05b88f4823f46ef1ddbb3d438db16c0f6e71.tar.bz2 |
PR31692, objdump fails .debug_info size check
PR 31692
* objdump.c (load_specific_debug_section): Replace bfd_get_size
check with bfd_section_size_insane. Call free_debug_section
after printing error messages. Set section->start NULL when
freeing.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/objdump.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c index 5acaa54..3d70df4 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -4286,6 +4286,7 @@ load_specific_debug_section (enum dwarf_section_display_enum debug, if (streq (section->filename, bfd_get_filename (abfd))) return true; free (section->start); + section->start = NULL; } section->filename = bfd_get_filename (abfd); @@ -4297,13 +4298,12 @@ load_specific_debug_section (enum dwarf_section_display_enum debug, alloced = amt = section->size + 1; if (alloced != amt || alloced == 0 - || (bfd_get_size (abfd) != 0 && alloced >= bfd_get_size (abfd))) + || bfd_section_size_insane (abfd, sec)) { - section->start = NULL; - free_debug_section (debug); printf (_("\nSection '%s' has an invalid size: %#" PRIx64 ".\n"), sanitize_string (section->name), section->size); + free_debug_section (debug); return false; } @@ -4345,9 +4345,9 @@ load_specific_debug_section (enum dwarf_section_display_enum debug, if (!ret) { - free_debug_section (debug); printf (_("\nCan't get contents for section '%s'.\n"), sanitize_string (section->name)); + free_debug_section (debug); return false; } |