diff options
author | Alan Modra <amodra@bigpond.net.au> | 2012-08-17 01:06:27 +0000 |
---|---|---|
committer | Alan Modra <amodra@bigpond.net.au> | 2012-08-17 01:06:27 +0000 |
commit | 83f9620ac3d7ddabc290d400085156fe84e67529 (patch) | |
tree | f4f8b11a9f57b6eb5017bbb7dc0dc03292a65f9c | |
parent | 431df3d447dfcd8e2f6aab2f7c45c144f4578c82 (diff) | |
download | binutils-redhat-83f9620ac3d7ddabc290d400085156fe84e67529.tar.gz |
PR binutils/14475:
* archive.c (bfd_ar_hdr_from_filesystem): Revert last change.
Instead malloc areltdata.
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/archive.c | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2c3bacb698..05731545a3 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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: diff --git a/bfd/archive.c b/bfd/archive.c index e0cb37096c..2d67e1fb34 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 (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; |