From 635d05b88f4823f46ef1ddbb3d438db16c0f6e71 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 2 May 2024 19:02:48 +0930 Subject: [PATCH] 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. --- binutils/objdump.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/binutils/objdump.c b/binutils/objdump.c index 5acaa54929d..3d70df470f2 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; } -- 2.47.3