aboutsummaryrefslogtreecommitdiff
path: root/binutils/readelf.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2015-02-06 12:59:25 +0000
committerNick Clifton <nickc@redhat.com>2015-02-06 13:03:08 +0000
commit55325047241cf38dae3c6a577561c740a9024bf3 (patch)
tree662ac09d63a5a42bb768e12cdb62760e2eefb4e0 /binutils/readelf.c
parent9e2dec471006de3e0489a34fbeb922fee1e302af (diff)
downloadfsf-binutils-gdb-55325047241cf38dae3c6a577561c740a9024bf3.zip
fsf-binutils-gdb-55325047241cf38dae3c6a577561c740a9024bf3.tar.gz
fsf-binutils-gdb-55325047241cf38dae3c6a577561c740a9024bf3.tar.bz2
Fix an invalid memory access triggered by running readelf on a fuzzed binary.
PR binutils/17531 * readelf.c (process_mips_specific): Fail if an option has an invalid size.
Diffstat (limited to 'binutils/readelf.c')
-rw-r--r--binutils/readelf.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c
index a0d6f32..00bcb1d 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -13880,9 +13880,8 @@ process_mips_specific (FILE * file)
if (option->size < sizeof (* eopt)
|| offset + option->size > sect->sh_size)
{
- warn (_("Invalid size (%u) for MIPS option\n"), option->size);
- option->size = sizeof (* eopt);
- break;
+ error (_("Invalid size (%u) for MIPS option\n"), option->size);
+ return 0;
}
offset += option->size;