Fix an illegal memorty access when running gprof over corrupt data.
authorNick Clifton <nickc@redhat.com>
Tue, 11 Apr 2023 15:22:28 +0000 (16:22 +0100)
committerNick Clifton <nickc@redhat.com>
Tue, 11 Apr 2023 15:22:28 +0000 (16:22 +0100)
  PR 30324
  * symtab.c (symtab_finalize): Only change the end address if dst has been updated.

gprof/ChangeLog
gprof/symtab.c

index d49b189490583720dfdf1e5d293f4aa3097b38f9..33a95f272fa2de9bdd377ffd150f1fe894b58182 100644 (file)
@@ -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.
index ea47aac47b5577c7cde9ae4386eef63118f26dfd..61feebc5d029ec959e898310c86816ca123d20b1 100644 (file)
@@ -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;