summaryrefslogtreecommitdiff
path: root/bfd/archive.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2012-08-16 14:24:42 +0000
committerTom Tromey <tromey@redhat.com>2012-08-16 14:24:42 +0000
commitadc0f000f855fe1583992a61ff2f94ab7245348f (patch)
tree171e38263d3ac3815cc9ae72486288547b7c4277 /bfd/archive.c
parent8c8125b61c560e6ae47d4f3e48786121f944e364 (diff)
downloadbinutils-redhat-adc0f000f855fe1583992a61ff2f94ab7245348f.tar.gz
PR binutils/14475:
* archive.c (bfd_ar_hdr_from_filesystem): Allocate areltdata on 'member' BFD. Don't try to free 'ared'.
Diffstat (limited to 'bfd/archive.c')
-rw-r--r--bfd/archive.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/bfd/archive.c b/bfd/archive.c
index dc67da79e0..e0cb37096c 100644
--- a/bfd/archive.c
+++ b/bfd/archive.c
@@ -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;