PR binutils/14475:
authorAlan Modra <amodra@gmail.com>
Fri, 17 Aug 2012 01:06:27 +0000 (01:06 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 17 Aug 2012 01:06:27 +0000 (01:06 +0000)
* archive.c (bfd_ar_hdr_from_filesystem): Revert last change.
Instead malloc areltdata.

bfd/ChangeLog
bfd/archive.c

index 2c3bacb69836584aa4892100c8ebb34a95f3c5e8..05731545a3b22f879ed3d3f23db1e60368a329e7 100644 (file)
@@ -1,3 +1,9 @@
+2012-08-17  Alan Modra  <amodra@gmail.com>
+
+       PR binutils/14475:
+       * archive.c (bfd_ar_hdr_from_filesystem): Revert last change.
+       Instead malloc areltdata.
+
 2012-08-16  Tom Tromey  <tromey@redhat.com>
 
        PR binutils/14475:
index e0cb37096c8b3cbb4812f27b65ed96759d1cb1a7..2d67e1fb342e3d3d86f19e3d5e334affa47aa06f 100644 (file)
@@ -1896,7 +1896,7 @@ bfd_ar_hdr_from_filesystem (bfd *abfd, const char *filename, bfd *member)
     }
 
   amt = sizeof (struct ar_hdr) + sizeof (struct areltdata);
-  ared = (struct areltdata *) bfd_zalloc (member, amt);
+  ared = (struct areltdata *) bfd_zmalloc (amt);
   if (ared == NULL)
     return NULL;
   hdr = (struct ar_hdr *) (((char *) ared) + sizeof (struct areltdata));
@@ -1927,7 +1927,10 @@ bfd_ar_hdr_from_filesystem (bfd *abfd, const char *filename, bfd *member)
   _bfd_ar_spacepad (hdr->ar_mode, sizeof (hdr->ar_mode), "%-8lo",
                    status.st_mode);
   if (!_bfd_ar_sizepad (hdr->ar_size, sizeof (hdr->ar_size), status.st_size))
-    return NULL;
+    {
+      free (ared);
+      return NULL;
+    }
   memcpy (hdr->ar_fmag, ARFMAG, 2);
   ared->parsed_size = status.st_size;
   ared->arch_header = (char *) hdr;