From: Alan Modra Date: Sat, 3 Jun 2023 07:46:04 +0000 (+0930) Subject: Re: loongarch readelf support X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=89c70cd358b8fa46b84cd100efc95495ff0160ae;p=binutils-gdb.git Re: loongarch readelf support Another segfault. * readelf.c (target_specific_reloc_handling): Sanity check loongarch reloc r_offset. --- diff --git a/binutils/readelf.c b/binutils/readelf.c index 042d2301517..23d3e21bea6 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -14021,8 +14021,9 @@ target_specific_reloc_handling (Filedata *filedata, unsigned int reloc_size = 0; int leb_ret = 0; - value = read_leb128 (start + reloc->r_offset, end, false, - &reloc_size, &leb_ret); + if (reloc->r_offset < (size_t) (end - start)) + value = read_leb128 (start + reloc->r_offset, end, false, + &reloc_size, &leb_ret); if (leb_ret != 0 || reloc_size == 0 || reloc_size > 8) error (_("LoongArch ULEB128 field at 0x%lx contains invalid " "ULEB128 value\n"),