[binutils-gdb] s390: Add r_offset check to the weak undef change

Andreas Krebbel krebbel@sourceware.org
Tue Feb 27 14:26:14 GMT 2024


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

commit f1c4160786e08cf0ec4c89c5c0466deab0855ab8
Author: Andreas Krebbel <krebbel@linux.ibm.com>
Date:   Tue Feb 27 15:24:06 2024 +0100

    s390: Add r_offset check to the weak undef change
    
    Since we are accessing up to 2 bytes before the relocation target we
    should better make sure there are actually 2 bytes before it.
    
    ChangeLog:
    
            * bfd/elf64-s390.c (elf_s390_relocate_section): Make sure
            rel->r_offset is large enough.

Diff:
---
 bfd/elf64-s390.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c
index 74ac0180bf8..beaf3e90743 100644
--- a/bfd/elf64-s390.c
+++ b/bfd/elf64-s390.c
@@ -2486,7 +2486,8 @@ elf_s390_relocate_section (bfd *output_bfd,
 	      && !h->root.linker_def
 	      && (bfd_link_executable (info)
 		  || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
-	      && r_type == R_390_PC32DBL)
+	      && r_type == R_390_PC32DBL
+	      && rel->r_offset >= 2)
 	    {
 	      void *insn_start = contents + rel->r_offset - 2;
 	      uint16_t op = bfd_get_16 (input_bfd, insn_start) & 0xff0f;


More information about the Binutils-cvs mailing list