Fixes a problem recognizing libraries created by Visual Studio.
authorNick Clifton <nickc@redhat.com>
Fri, 27 Feb 2015 15:38:32 +0000 (15:38 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 27 Feb 2015 15:40:49 +0000 (15:40 +0000)
PR binutils/17910
* coffgen.c (_bfd_coff_internal_syment_name): Only check for
string length overflow when the string table length is actually
set.

bfd/ChangeLog
bfd/coffgen.c

index dea16ae..1b223f9 100644 (file)
@@ -1,3 +1,10 @@
+2015-02-27  Nick Clifton  <nickc@redhat.com>
+
+       PR binutils/17910
+       * coffgen.c (_bfd_coff_internal_syment_name): Only check for
+       string length overflow when the string table length is actually
+       set.
+
 2015-02-27  Marcus Shawcroft  <marcus.shawcroft@arm.com>
 
        * bfd/bfd-in2.h: Regenerate.
index aa01559..83673d4 100644 (file)
@@ -468,7 +468,10 @@ _bfd_coff_internal_syment_name (bfd *abfd,
          if (strings == NULL)
            return NULL;
        }
-      if (sym->_n._n_n._n_offset >= obj_coff_strings_len (abfd))
+      /* PR 17910: Only check for string overflow if the length has been set.
+        Some DLLs, eg those produced by Visual Studio, may not set the length field.  */
+      if (obj_coff_strings_len (abfd) > 0
+         && sym->_n._n_n._n_offset >= obj_coff_strings_len (abfd))
        return NULL;
       return strings + sym->_n._n_n._n_offset;
     }