* vms-lib.c (_bfd_vms_lib_get_module): Use bfd_zmalloc for
areltdata. * opncls.c (_bfd_delete_bfd): Free arelt_data. * mach-o.c (bfd_mach_o_fat_member_init): Use bfd_zmalloc for areltdata. * ecoff.c (_bfd_ecoff_slurp_armap): Use free for mapdata. * coff-rs6000.c (_bfd_xcoff_read_ar_hdr): Use bfd_zmalloc for areltdata. (xcoff_write_archive_contents_old): Likewise. (xcoff_write_archive_contents_big): Likewise. * archive64.c (bfd_elf64_archive_slurp_armap): Use free for areltdata. * archive.c (_bfd_generic_read_ar_hdr_mag): Use bfd_zmalloc and free for areltdata. (_bfd_get_elt_at_filepos): Likewise. Clear n_nfd->arelt_data on failure. (do_slurp_bsd_armap): Use bfd_zmalloc and free for areltdata. (do_slurp_coff_armap): Likewise. (_bfd_slurp_extended_name_table): Likewise. (bfd_slurp_bsd_armap_f2): Likewise. Don't leak 'mapdata'.
This commit is contained in:
parent
542385d9f7
commit
06e7acd76f
@ -1,3 +1,26 @@
|
|||||||
|
2012-08-20 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
* vms-lib.c (_bfd_vms_lib_get_module): Use bfd_zmalloc for
|
||||||
|
areltdata.
|
||||||
|
* opncls.c (_bfd_delete_bfd): Free arelt_data.
|
||||||
|
* mach-o.c (bfd_mach_o_fat_member_init): Use bfd_zmalloc for
|
||||||
|
areltdata.
|
||||||
|
* ecoff.c (_bfd_ecoff_slurp_armap): Use free for mapdata.
|
||||||
|
* coff-rs6000.c (_bfd_xcoff_read_ar_hdr): Use bfd_zmalloc for
|
||||||
|
areltdata.
|
||||||
|
(xcoff_write_archive_contents_old): Likewise.
|
||||||
|
(xcoff_write_archive_contents_big): Likewise.
|
||||||
|
* archive64.c (bfd_elf64_archive_slurp_armap): Use free for
|
||||||
|
areltdata.
|
||||||
|
* archive.c (_bfd_generic_read_ar_hdr_mag): Use bfd_zmalloc and
|
||||||
|
free for areltdata.
|
||||||
|
(_bfd_get_elt_at_filepos): Likewise. Clear n_nfd->arelt_data on
|
||||||
|
failure.
|
||||||
|
(do_slurp_bsd_armap): Use bfd_zmalloc and free for areltdata.
|
||||||
|
(do_slurp_coff_armap): Likewise.
|
||||||
|
(_bfd_slurp_extended_name_table): Likewise.
|
||||||
|
(bfd_slurp_bsd_armap_f2): Likewise. Don't leak 'mapdata'.
|
||||||
|
|
||||||
2012-08-17 Nick Clifton <nickc@redhat.com>
|
2012-08-17 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* po/vi.po: Updated Vietnamese translation.
|
* po/vi.po: Updated Vietnamese translation.
|
||||||
|
@ -517,7 +517,7 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag)
|
|||||||
parsed_size -= namelen;
|
parsed_size -= namelen;
|
||||||
extra_size = namelen;
|
extra_size = namelen;
|
||||||
|
|
||||||
allocptr = (char *) bfd_zalloc (abfd, allocsize);
|
allocptr = (char *) bfd_zmalloc (allocsize);
|
||||||
if (allocptr == NULL)
|
if (allocptr == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
filename = (allocptr
|
filename = (allocptr
|
||||||
@ -525,6 +525,7 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag)
|
|||||||
+ sizeof (struct ar_hdr));
|
+ sizeof (struct ar_hdr));
|
||||||
if (bfd_bread (filename, namelen, abfd) != namelen)
|
if (bfd_bread (filename, namelen, abfd) != namelen)
|
||||||
{
|
{
|
||||||
|
free (allocptr);
|
||||||
if (bfd_get_error () != bfd_error_system_call)
|
if (bfd_get_error () != bfd_error_system_call)
|
||||||
bfd_set_error (bfd_error_no_more_archived_files);
|
bfd_set_error (bfd_error_no_more_archived_files);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -560,7 +561,7 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag)
|
|||||||
|
|
||||||
if (!allocptr)
|
if (!allocptr)
|
||||||
{
|
{
|
||||||
allocptr = (char *) bfd_zalloc (abfd, allocsize);
|
allocptr = (char *) bfd_zmalloc (allocsize);
|
||||||
if (allocptr == NULL)
|
if (allocptr == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -643,7 +644,10 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
|
|||||||
{
|
{
|
||||||
filename = _bfd_append_relative_path (archive, filename);
|
filename = _bfd_append_relative_path (archive, filename);
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
return NULL;
|
{
|
||||||
|
free (new_areldata);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (new_areldata->origin > 0)
|
if (new_areldata->origin > 0)
|
||||||
@ -655,13 +659,13 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
|
|||||||
if (ext_arch == NULL
|
if (ext_arch == NULL
|
||||||
|| ! bfd_check_format (ext_arch, bfd_archive))
|
|| ! bfd_check_format (ext_arch, bfd_archive))
|
||||||
{
|
{
|
||||||
bfd_release (archive, new_areldata);
|
free (new_areldata);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
n_nfd = _bfd_get_elt_at_filepos (ext_arch, new_areldata->origin);
|
n_nfd = _bfd_get_elt_at_filepos (ext_arch, new_areldata->origin);
|
||||||
if (n_nfd == NULL)
|
if (n_nfd == NULL)
|
||||||
{
|
{
|
||||||
bfd_release (archive, new_areldata);
|
free (new_areldata);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
n_nfd->proxy_origin = bfd_tell (archive);
|
n_nfd->proxy_origin = bfd_tell (archive);
|
||||||
@ -683,7 +687,7 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
|
|||||||
|
|
||||||
if (n_nfd == NULL)
|
if (n_nfd == NULL)
|
||||||
{
|
{
|
||||||
bfd_release (archive, new_areldata);
|
free (new_areldata);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -707,7 +711,8 @@ _bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
|
|||||||
if (_bfd_add_bfd_to_archive_cache (archive, filepos, n_nfd))
|
if (_bfd_add_bfd_to_archive_cache (archive, filepos, n_nfd))
|
||||||
return n_nfd;
|
return n_nfd;
|
||||||
|
|
||||||
bfd_release (archive, new_areldata);
|
free (new_areldata);
|
||||||
|
n_nfd->arelt_data = NULL;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -894,7 +899,7 @@ do_slurp_bsd_armap (bfd *abfd)
|
|||||||
if (mapdata == NULL)
|
if (mapdata == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
parsed_size = mapdata->parsed_size;
|
parsed_size = mapdata->parsed_size;
|
||||||
bfd_release (abfd, mapdata); /* Don't need it any more. */
|
free (mapdata);
|
||||||
|
|
||||||
raw_armap = (bfd_byte *) bfd_zalloc (abfd, parsed_size);
|
raw_armap = (bfd_byte *) bfd_zalloc (abfd, parsed_size);
|
||||||
if (raw_armap == NULL)
|
if (raw_armap == NULL)
|
||||||
@ -970,7 +975,7 @@ do_slurp_coff_armap (bfd *abfd)
|
|||||||
if (mapdata == NULL)
|
if (mapdata == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
parsed_size = mapdata->parsed_size;
|
parsed_size = mapdata->parsed_size;
|
||||||
bfd_release (abfd, mapdata); /* Don't need it any more. */
|
free (mapdata);
|
||||||
|
|
||||||
if (bfd_bread (int_buf, 4, abfd) != 4)
|
if (bfd_bread (int_buf, 4, abfd) != 4)
|
||||||
{
|
{
|
||||||
@ -1063,7 +1068,7 @@ do_slurp_coff_armap (bfd *abfd)
|
|||||||
ardata->first_file_filepos +=
|
ardata->first_file_filepos +=
|
||||||
(tmp->parsed_size + sizeof (struct ar_hdr) + 1) & ~(unsigned) 1;
|
(tmp->parsed_size + sizeof (struct ar_hdr) + 1) & ~(unsigned) 1;
|
||||||
}
|
}
|
||||||
bfd_release (abfd, tmp);
|
free (tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1180,15 +1185,17 @@ bfd_slurp_bsd_armap_f2 (bfd *abfd)
|
|||||||
|
|
||||||
if (mapdata->parsed_size < HPUX_SYMDEF_COUNT_SIZE + BSD_STRING_COUNT_SIZE)
|
if (mapdata->parsed_size < HPUX_SYMDEF_COUNT_SIZE + BSD_STRING_COUNT_SIZE)
|
||||||
{
|
{
|
||||||
|
free (mapdata);
|
||||||
wrong_format:
|
wrong_format:
|
||||||
bfd_set_error (bfd_error_wrong_format);
|
bfd_set_error (bfd_error_wrong_format);
|
||||||
byebye:
|
byebye:
|
||||||
bfd_release (abfd, mapdata);
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
left = mapdata->parsed_size - HPUX_SYMDEF_COUNT_SIZE - BSD_STRING_COUNT_SIZE;
|
left = mapdata->parsed_size - HPUX_SYMDEF_COUNT_SIZE - BSD_STRING_COUNT_SIZE;
|
||||||
|
|
||||||
amt = mapdata->parsed_size;
|
amt = mapdata->parsed_size;
|
||||||
|
free (mapdata);
|
||||||
|
|
||||||
raw_armap = (bfd_byte *) bfd_zalloc (abfd, amt);
|
raw_armap = (bfd_byte *) bfd_zalloc (abfd, amt);
|
||||||
if (raw_armap == NULL)
|
if (raw_armap == NULL)
|
||||||
goto byebye;
|
goto byebye;
|
||||||
@ -1290,7 +1297,7 @@ _bfd_slurp_extended_name_table (bfd *abfd)
|
|||||||
if (bfd_ardata (abfd)->extended_names == NULL)
|
if (bfd_ardata (abfd)->extended_names == NULL)
|
||||||
{
|
{
|
||||||
byebye:
|
byebye:
|
||||||
bfd_release (abfd, namedata);
|
free (namedata);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1327,8 +1334,7 @@ _bfd_slurp_extended_name_table (bfd *abfd)
|
|||||||
bfd_ardata (abfd)->first_file_filepos +=
|
bfd_ardata (abfd)->first_file_filepos +=
|
||||||
(bfd_ardata (abfd)->first_file_filepos) % 2;
|
(bfd_ardata (abfd)->first_file_filepos) % 2;
|
||||||
|
|
||||||
/* FIXME, we can't release namedata here because it was allocated
|
free (namedata);
|
||||||
below extended_names on the objalloc... */
|
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ bfd_elf64_archive_slurp_armap (bfd *abfd)
|
|||||||
if (mapdata == NULL)
|
if (mapdata == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
parsed_size = mapdata->parsed_size;
|
parsed_size = mapdata->parsed_size;
|
||||||
bfd_release (abfd, mapdata);
|
free (mapdata);
|
||||||
|
|
||||||
if (bfd_bread (int_buf, 8, abfd) != 8)
|
if (bfd_bread (int_buf, 8, abfd) != 8)
|
||||||
{
|
{
|
||||||
|
@ -1496,7 +1496,7 @@ _bfd_xcoff_read_ar_hdr (bfd *abfd)
|
|||||||
struct areltdata *ret;
|
struct areltdata *ret;
|
||||||
bfd_size_type amt = sizeof (struct areltdata);
|
bfd_size_type amt = sizeof (struct areltdata);
|
||||||
|
|
||||||
ret = (struct areltdata *) bfd_alloc (abfd, amt);
|
ret = (struct areltdata *) bfd_zmalloc (amt);
|
||||||
if (ret == NULL)
|
if (ret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -2113,7 +2113,7 @@ xcoff_write_archive_contents_old (bfd *abfd)
|
|||||||
total_namlen += strlen (normalize_filename (sub)) + 1;
|
total_namlen += strlen (normalize_filename (sub)) + 1;
|
||||||
if (sub->arelt_data == NULL)
|
if (sub->arelt_data == NULL)
|
||||||
{
|
{
|
||||||
sub->arelt_data = bfd_zalloc (sub, sizeof (struct areltdata));
|
sub->arelt_data = bfd_zmalloc (sizeof (struct areltdata));
|
||||||
if (sub->arelt_data == NULL)
|
if (sub->arelt_data == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@ -2329,7 +2329,7 @@ xcoff_write_archive_contents_big (bfd *abfd)
|
|||||||
if (current_bfd->arelt_data == NULL)
|
if (current_bfd->arelt_data == NULL)
|
||||||
{
|
{
|
||||||
size = sizeof (struct areltdata);
|
size = sizeof (struct areltdata);
|
||||||
current_bfd->arelt_data = bfd_zalloc (current_bfd, size);
|
current_bfd->arelt_data = bfd_zmalloc (size);
|
||||||
if (current_bfd->arelt_data == NULL)
|
if (current_bfd->arelt_data == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -2904,7 +2904,7 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
|
|||||||
if (mapdata == NULL)
|
if (mapdata == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
parsed_size = mapdata->parsed_size;
|
parsed_size = mapdata->parsed_size;
|
||||||
bfd_release (abfd, (void *) mapdata);
|
free (mapdata);
|
||||||
|
|
||||||
raw_armap = (char *) bfd_alloc (abfd, parsed_size);
|
raw_armap = (char *) bfd_alloc (abfd, parsed_size);
|
||||||
if (raw_armap == NULL)
|
if (raw_armap == NULL)
|
||||||
|
@ -4294,7 +4294,7 @@ bfd_mach_o_fat_member_init (bfd *abfd,
|
|||||||
abfd->filename = name;
|
abfd->filename = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
areltdata = bfd_zalloc (abfd, sizeof (struct areltdata));
|
areltdata = bfd_zmalloc (sizeof (struct areltdata));
|
||||||
areltdata->parsed_size = entry->size;
|
areltdata->parsed_size = entry->size;
|
||||||
abfd->arelt_data = areltdata;
|
abfd->arelt_data = areltdata;
|
||||||
abfd->iostream = NULL;
|
abfd->iostream = NULL;
|
||||||
|
@ -136,6 +136,7 @@ _bfd_delete_bfd (bfd *abfd)
|
|||||||
objalloc_free ((struct objalloc *) abfd->memory);
|
objalloc_free ((struct objalloc *) abfd->memory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free (abfd->arelt_data);
|
||||||
free (abfd);
|
free (abfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* BFD back-end for VMS archive files.
|
/* BFD back-end for VMS archive files.
|
||||||
|
|
||||||
Copyright 2010, 2011 Free Software Foundation, Inc.
|
Copyright 2010, 2011, 2012 Free Software Foundation, Inc.
|
||||||
Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
|
Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
|
||||||
|
|
||||||
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
||||||
@ -1337,7 +1337,7 @@ _bfd_vms_lib_get_module (bfd *abfd, unsigned int modidx)
|
|||||||
res = _bfd_create_empty_archive_element_shell (abfd);
|
res = _bfd_create_empty_archive_element_shell (abfd);
|
||||||
if (res == NULL)
|
if (res == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
arelt = bfd_zalloc (res, sizeof (*arelt));
|
arelt = bfd_zmalloc (sizeof (*arelt));
|
||||||
if (arelt == NULL)
|
if (arelt == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
res->arelt_data = arelt;
|
res->arelt_data = arelt;
|
||||||
|
Loading…
Reference in New Issue
Block a user