projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't write to inferior_ptid in corelow.c
[deliverable/binutils-gdb.git]
/
bfd
/
archive.c
diff --git
a/bfd/archive.c
b/bfd/archive.c
index 71bc6a4323c999be30d551d42b05f013043276b8..9d63849a483d5cd5c5ad40eb6b811bae2c9ae813 100644
(file)
--- a/
bfd/archive.c
+++ b/
bfd/archive.c
@@
-403,7
+403,7
@@
find_nested_archive (const char *filename, bfd *arch_bfd)
bfd *abfd;
/* PR 15140: Don't allow a nested archive pointing to itself. */
bfd *abfd;
/* PR 15140: Don't allow a nested archive pointing to itself. */
- if (filename_cmp (filename,
arch_bfd->filename
) == 0)
+ if (filename_cmp (filename,
bfd_get_filename (arch_bfd)
) == 0)
{
bfd_set_error (bfd_error_malformed_archive);
return NULL;
{
bfd_set_error (bfd_error_malformed_archive);
return NULL;
@@
-413,7
+413,7
@@
find_nested_archive (const char *filename, bfd *arch_bfd)
abfd != NULL;
abfd = abfd->archive_next)
{
abfd != NULL;
abfd = abfd->archive_next)
{
- if (filename_cmp (filename,
abfd->filename
) == 0)
+ if (filename_cmp (filename,
bfd_get_filename (abfd)
) == 0)
return abfd;
}
abfd = open_nested_file (filename, arch_bfd);
return abfd;
}
abfd = open_nested_file (filename, arch_bfd);
@@
-488,6
+488,7
@@
_bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag)
bfd_size_type parsed_size;
struct areltdata *ared;
char *filename = NULL;
bfd_size_type parsed_size;
struct areltdata *ared;
char *filename = NULL;
+ ufile_ptr filesize;
bfd_size_type namelen = 0;
bfd_size_type allocsize = sizeof (struct areltdata) + sizeof (struct ar_hdr);
char *allocptr = 0;
bfd_size_type namelen = 0;
bfd_size_type allocsize = sizeof (struct areltdata) + sizeof (struct ar_hdr);
char *allocptr = 0;
@@
-538,11
+539,19
@@
_bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag)
{
/* BSD-4.4 extended name */
namelen = atoi (&hdr.ar_name[3]);
{
/* BSD-4.4 extended name */
namelen = atoi (&hdr.ar_name[3]);
+ filesize = bfd_get_file_size (abfd);
+ if (namelen > parsed_size
+ || namelen > -allocsize - 2
+ || (filesize != 0 && namelen > filesize))
+ {
+ bfd_set_error (bfd_error_malformed_archive);
+ return NULL;
+ }
allocsize += namelen + 1;
parsed_size -= namelen;
extra_size = namelen;
allocsize += namelen + 1;
parsed_size -= namelen;
extra_size = namelen;
- allocptr = (char *) bfd_
z
malloc (allocsize);
+ allocptr = (char *) bfd_malloc (allocsize);
if (allocptr == NULL)
return NULL;
filename = (allocptr
if (allocptr == NULL)
return NULL;
filename = (allocptr
@@
-586,13
+595,13
@@
_bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag)
if (!allocptr)
{
if (!allocptr)
{
- allocptr = (char *) bfd_
z
malloc (allocsize);
+ allocptr = (char *) bfd_malloc (allocsize);
if (allocptr == NULL)
return NULL;
}
if (allocptr == NULL)
return NULL;
}
+ memset (allocptr, 0, sizeof (struct areltdata));
ared = (struct areltdata *) allocptr;
ared = (struct areltdata *) allocptr;
-
ared->arch_header = allocptr + sizeof (struct areltdata);
memcpy (ared->arch_header, &hdr, sizeof (struct ar_hdr));
ared->parsed_size = parsed_size;
ared->arch_header = allocptr + sizeof (struct areltdata);
memcpy (ared->arch_header, &hdr, sizeof (struct ar_hdr));
ared->parsed_size = parsed_size;
@@
-619,7
+628,7
@@
_bfd_generic_read_ar_hdr_mag (bfd *abfd, const char *mag)
char *
_bfd_append_relative_path (bfd *arch, char *elt_name)
{
char *
_bfd_append_relative_path (bfd *arch, char *elt_name)
{
- const char *arch_name =
arch->filename
;
+ const char *arch_name =
bfd_get_filename (arch)
;
const char *base_name = lbasename (arch_name);
size_t prefix_len;
char *filename;
const char *base_name = lbasename (arch_name);
size_t prefix_len;
char *filename;
@@
-728,8
+737,7
@@
_bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
else
{
n_bfd->origin = n_bfd->proxy_origin;
else
{
n_bfd->origin = n_bfd->proxy_origin;
- n_bfd->filename = bfd_strdup (filename);
- if (n_bfd->filename == NULL)
+ if (!bfd_set_filename (n_bfd, filename))
goto out;
}
goto out;
}
@@
-842,7
+850,7
@@
_bfd_noarchive_openr_next_archived_file (bfd *archive,
return (bfd *) _bfd_ptr_bfd_null_error (archive);
}
return (bfd *) _bfd_ptr_bfd_null_error (archive);
}
-const bfd_target *
+bfd_cleanup
bfd_generic_archive_p (bfd *abfd)
{
struct artdata *tdata_hold;
bfd_generic_archive_p (bfd *abfd)
{
struct artdata *tdata_hold;
@@
-924,7
+932,7
@@
bfd_generic_archive_p (bfd *abfd)
}
}
}
}
- return
abfd->xvec
;
+ return
_bfd_no_cleanup
;
}
/* Some constants for a 32 bit BSD archive structure. We do not
}
/* Some constants for a 32 bit BSD archive structure. We do not
@@
-1460,8
+1468,7
@@
adjust_relative_path (const char * path, const char * ref_path)
if (len > pathbuf_len)
{
if (len > pathbuf_len)
{
- if (pathbuf != NULL)
- free (pathbuf);
+ free (pathbuf);
pathbuf_len = 0;
pathbuf = (char *) bfd_malloc (len);
if (pathbuf == NULL)
pathbuf_len = 0;
pathbuf = (char *) bfd_malloc (len);
if (pathbuf == NULL)
@@
-1555,13
+1562,13
@@
_bfd_construct_extended_name_table (bfd *abfd,
if (bfd_is_thin_archive (abfd))
{
if (bfd_is_thin_archive (abfd))
{
- const char *filename =
current->filename
;
+ const char *filename =
bfd_get_filename (current)
;
/* If the element being added is a member of another archive
(i.e., we are flattening), use the containing archive's name. */
if (current->my_archive
&& ! bfd_is_thin_archive (current->my_archive))
/* If the element being added is a member of another archive
(i.e., we are flattening), use the containing archive's name. */
if (current->my_archive
&& ! bfd_is_thin_archive (current->my_archive))
- filename =
current->my_archive->filename
;
+ filename =
bfd_get_filename (current->my_archive)
;
/* If the path is the same as the previous path seen,
reuse it. This can happen when flattening a thin
/* If the path is the same as the previous path seen,
reuse it. This can happen when flattening a thin
@@
-1574,8
+1581,8
@@
_bfd_construct_extended_name_table (bfd *abfd,
/* If the path is relative, adjust it relative to
the containing archive. */
if (! IS_ABSOLUTE_PATH (filename)
/* If the path is relative, adjust it relative to
the containing archive. */
if (! IS_ABSOLUTE_PATH (filename)
- && ! IS_ABSOLUTE_PATH (
abfd->filename
))
- normal = adjust_relative_path (filename,
abfd->filename
);
+ && ! IS_ABSOLUTE_PATH (
bfd_get_filename (abfd)
))
+ normal = adjust_relative_path (filename,
bfd_get_filename (abfd)
);
else
normal = filename;
else
normal = filename;
@@
-1589,7
+1596,7
@@
_bfd_construct_extended_name_table (bfd *abfd,
continue;
}
continue;
}
- normal = normalize (abfd,
current->filename
);
+ normal = normalize (abfd,
bfd_get_filename (current)
);
if (normal == NULL)
return FALSE;
if (normal == NULL)
return FALSE;
@@
-1646,7
+1653,7
@@
_bfd_construct_extended_name_table (bfd *abfd,
const char *normal;
unsigned int thislen;
long stroff;
const char *normal;
unsigned int thislen;
long stroff;
- const char *filename =
current->filename
;
+ const char *filename =
bfd_get_filename (current)
;
if (bfd_is_thin_archive (abfd))
{
if (bfd_is_thin_archive (abfd))
{
@@
-1654,7
+1661,7
@@
_bfd_construct_extended_name_table (bfd *abfd,
(i.e., we are flattening), use the containing archive's name. */
if (current->my_archive
&& ! bfd_is_thin_archive (current->my_archive))
(i.e., we are flattening), use the containing archive's name. */
if (current->my_archive
&& ! bfd_is_thin_archive (current->my_archive))
- filename =
current->my_archive->filename
;
+ filename =
bfd_get_filename (current->my_archive)
;
/* If the path is the same as the previous path seen,
reuse it. This can happen when flattening a thin
archive that contains other archives.
/* If the path is the same as the previous path seen,
reuse it. This can happen when flattening a thin
archive that contains other archives.
@@
-1663,8
+1670,8
@@
_bfd_construct_extended_name_table (bfd *abfd,
if (last_filename && filename_cmp (last_filename, filename) == 0)
normal = last_filename;
else if (! IS_ABSOLUTE_PATH (filename)
if (last_filename && filename_cmp (last_filename, filename) == 0)
normal = last_filename;
else if (! IS_ABSOLUTE_PATH (filename)
- && ! IS_ABSOLUTE_PATH (
abfd->filename
))
- normal = adjust_relative_path (filename,
abfd->filename
);
+ && ! IS_ABSOLUTE_PATH (
bfd_get_filename (abfd)
))
+ normal = adjust_relative_path (filename,
bfd_get_filename (abfd)
);
else
normal = filename;
}
else
normal = filename;
}
@@
-1732,7
+1739,7
@@
_bfd_archive_bsd44_construct_extended_name_table (bfd *abfd,
current != NULL;
current = current->archive_next)
{
current != NULL;
current = current->archive_next)
{
- const char *normal = normalize (abfd,
current->filename
);
+ const char *normal = normalize (abfd,
bfd_get_filename (current)
);
int has_space = 0;
unsigned int len;
int has_space = 0;
unsigned int len;
@@
-1778,7
+1785,7
@@
_bfd_bsd44_write_ar_hdr (bfd *archive, bfd *abfd)
if (is_bsd44_extended_name (hdr->ar_name))
{
/* This is a BSD 4.4 extended name. */
if (is_bsd44_extended_name (hdr->ar_name))
{
/* This is a BSD 4.4 extended name. */
- const char *fullname = normalize (abfd,
abfd->filename
);
+ const char *fullname = normalize (abfd,
bfd_get_filename (abfd)
);
unsigned int len = strlen (fullname);
unsigned int padded_len = (len + 3) & ~3;
unsigned int len = strlen (fullname);
unsigned int padded_len = (len + 3) & ~3;
@@
-2130,13
+2137,15
@@
_bfd_write_archive_contents (bfd *arch)
if (!current->arelt_data)
{
current->arelt_data =
if (!current->arelt_data)
{
current->arelt_data =
- bfd_ar_hdr_from_filesystem (arch, current->filename, current);
+ bfd_ar_hdr_from_filesystem (arch, bfd_get_filename (current),
+ current);
if (!current->arelt_data)
goto input_err;
/* Put in the file name. */
BFD_SEND (arch, _bfd_truncate_arname,
if (!current->arelt_data)
goto input_err;
/* Put in the file name. */
BFD_SEND (arch, _bfd_truncate_arname,
- (arch, current->filename, (char *) arch_hdr (current)));
+ (arch, bfd_get_filename (current),
+ (char *) arch_hdr (current)));
}
if (makemap && ! hasobjects)
}
if (makemap && ! hasobjects)
@@
-2285,7
+2294,7
@@
_bfd_compute_and_write_armap (bfd *arch, unsigned int elength)
/* Drop all the files called __.SYMDEF, we're going to make our own. */
while (arch->archive_head
/* Drop all the files called __.SYMDEF, we're going to make our own. */
while (arch->archive_head
- && strcmp (
arch->archive_head->filename
, "__.SYMDEF") == 0)
+ && strcmp (
bfd_get_filename (arch->archive_head)
, "__.SYMDEF") == 0)
arch->archive_head = arch->archive_head->archive_next;
/* Map over each element. */
arch->archive_head = arch->archive_head->archive_next;
/* Map over each element. */
@@
-2316,8
+2325,7
@@
_bfd_compute_and_write_armap (bfd *arch, unsigned int elength)
{
if (storage > syms_max)
{
{
if (storage > syms_max)
{
- if (syms_max > 0)
- free (syms);
+ free (syms);
syms_max = storage;
syms = (asymbol **) bfd_malloc (syms_max);
if (syms == NULL)
syms_max = storage;
syms = (asymbol **) bfd_malloc (syms_max);
if (syms == NULL)
@@
-2398,20
+2406,16
@@
_bfd_compute_and_write_armap (bfd *arch, unsigned int elength)
ret = BFD_SEND (arch, write_armap,
(arch, elength, map, orl_count, stridx));
ret = BFD_SEND (arch, write_armap,
(arch, elength, map, orl_count, stridx));
- if (syms_max > 0)
- free (syms);
- if (map != NULL)
- free (map);
+ free (syms);
+ free (map);
if (first_name != NULL)
bfd_release (arch, first_name);
return ret;
error_return:
if (first_name != NULL)
bfd_release (arch, first_name);
return ret;
error_return:
- if (syms_max > 0)
- free (syms);
- if (map != NULL)
- free (map);
+ free (syms);
+ free (map);
if (first_name != NULL)
bfd_release (arch, first_name);
if (first_name != NULL)
bfd_release (arch, first_name);
@@
-2486,7
+2490,7
@@
_bfd_bsd_write_armap (bfd *arch,
{
struct stat statbuf;
{
struct stat statbuf;
- if (stat (
arch->filename
, &statbuf) == 0)
+ if (stat (
bfd_get_filename (arch)
, &statbuf) == 0)
bfd_ardata (arch)->armap_timestamp = (statbuf.st_mtime
+ ARMAP_TIME_OFFSET);
uid = getuid();
bfd_ardata (arch)->armap_timestamp = (statbuf.st_mtime
+ ARMAP_TIME_OFFSET);
uid = getuid();
This page took
0.027268 seconds
and
4
git commands to generate.