[binutils-gdb] Fix an illegal memorty access when running gprof over corrupt data.

Nick Clifton nickc@sourceware.org
Tue Apr 11 15:23:02 GMT 2023


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=91496180eba5150fb169c5edaff16877eefae7f9

commit 91496180eba5150fb169c5edaff16877eefae7f9
Author: Nick Clifton <nickc@redhat.com>
Date:   Tue Apr 11 16:22:28 2023 +0100

    Fix an illegal memorty access when running gprof over corrupt data.
    
      PR 30324
      * symtab.c (symtab_finalize): Only change the end address if dst has been updated.

Diff:
---
 gprof/ChangeLog | 6 ++++++
 gprof/symtab.c  | 2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/gprof/ChangeLog b/gprof/ChangeLog
index d49b1894905..33a95f272fa 100644
--- a/gprof/ChangeLog
+++ b/gprof/ChangeLog
@@ -1,3 +1,9 @@
+2023-04-11  Nick Clifton  <nickc@redhat.com>
+
+	PR 30324
+	* symtab.c (symtab_finalize): Only change the end address if dst
+	has been updated.
+
 2023-02-20  Nick Clifton  <nickc@redhat.com>
 
 	* po/ms.po: Updated Malayasian translation.
diff --git a/gprof/symtab.c b/gprof/symtab.c
index ea47aac47b5..61feebc5d02 100644
--- a/gprof/symtab.c
+++ b/gprof/symtab.c
@@ -147,7 +147,7 @@ symtab_finalize (Sym_Table *tab)
 	}
     }
 
-  if (tab->len > 0 && dst[-1].end_addr == 0)
+  if (tab->len > 0 && dst > tab->base && dst[-1].end_addr == 0)
     dst[-1].end_addr
       = core_text_sect->vma + bfd_section_size (core_text_sect) - 1;


More information about the Binutils-cvs mailing list