From cd11f78f810cf12b04046ac954ceb6528b00956c Mon Sep 17 00:00:00 2001 From: Alexander Cherepanov Date: Fri, 21 Nov 2014 11:19:49 +0000 Subject: [PATCH] Fix a snafu setting up the string table read in from a COFF file. PR binutils/17512 * coffgen.c (_bfd_coff_read_string_table): Test allocation of string table before clearing the first few bytes. --- bfd/ChangeLog | 6 ++++++ bfd/coffgen.c | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fc329677ad1..a9e6787c557 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2014-11-21 Alexander Cherepanov + + PR binutils/17512 + * coffgen.c (_bfd_coff_read_string_table): Test allocation of + string table before clearing the first few bytes. + 2014-11-21 Terry Guo * elf32-arm.c (elf32_arm_merge_eabi_attributes): Support FPv5. diff --git a/bfd/coffgen.c b/bfd/coffgen.c index a22f67a69d3..f19efc3affe 100644 --- a/bfd/coffgen.c +++ b/bfd/coffgen.c @@ -1711,15 +1711,15 @@ _bfd_coff_read_string_table (bfd *abfd) } strings = (char *) bfd_malloc (strsize + 1); + if (strings == NULL) + return NULL; + /* PR 17521 file: 079-54929-0.004. A corrupt file could contain an index that points into the first STRING_SIZE_SIZE bytes of the string table, so make sure that they are zero. */ memset (strings, 0, STRING_SIZE_SIZE); - if (strings == NULL) - return NULL; - if (bfd_bread (strings + STRING_SIZE_SIZE, strsize - STRING_SIZE_SIZE, abfd) != strsize - STRING_SIZE_SIZE) { -- 2.30.2