PR binutils/14475:
authorTom Tromey <tromey@redhat.com>
Thu, 16 Aug 2012 14:24:44 +0000 (14:24 +0000)
committerTom Tromey <tromey@redhat.com>
Thu, 16 Aug 2012 14:24:44 +0000 (14:24 +0000)
* archive.c (bfd_ar_hdr_from_filesystem): Allocate areltdata on
'member' BFD.  Don't try to free 'ared'.

bfd/ChangeLog
bfd/archive.c

index deac174..2c3bacb 100644 (file)
@@ -1,3 +1,9 @@
+2012-08-16  Tom Tromey  <tromey@redhat.com>
+
+       PR binutils/14475:
+       * archive.c (bfd_ar_hdr_from_filesystem): Allocate areltdata on
+       'member' BFD.  Don't try to free 'ared'.
+
 2012-08-14  Nick Clifton  <nickc@redhat.com>
 
        * po/uk.po: Updated Ukranian translation.
index dc67da7..e0cb370 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 (abfd, amt);
+  ared = (struct areltdata *) bfd_zalloc (member, amt);
   if (ared == NULL)
     return NULL;
   hdr = (struct ar_hdr *) (((char *) ared) + sizeof (struct areltdata));
@@ -1927,10 +1927,7 @@ 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))
-    {
-      free (ared);
-      return NULL;
-    }
+    return NULL;
   memcpy (hdr->ar_fmag, ARFMAG, 2);
   ared->parsed_size = status.st_size;
   ared->arch_header = (char *) hdr;