diff options
author | Nick Clifton <nickc@redhat.com> | 2013-02-07 16:07:03 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2013-02-07 16:07:03 +0000 |
commit | 907b01b73a786f82f9ea1be03fae9631df326bc2 (patch) | |
tree | 424240e37fbc472f5e25ac5f01fa9e19277d3c57 /binutils/elfcomm.c | |
parent | 45e25a3641eda4ba1d973729ac7dbd5c66bab99b (diff) | |
download | gdb-907b01b73a786f82f9ea1be03fae9631df326bc2.zip gdb-907b01b73a786f82f9ea1be03fae9631df326bc2.tar.gz gdb-907b01b73a786f82f9ea1be03fae9631df326bc2.tar.bz2 |
* elfcomm.c (get_archive_member_name): Prevent seg-fault if a
corrupt archive uses long names but has no long name table.
Diffstat (limited to 'binutils/elfcomm.c')
-rw-r--r-- | binutils/elfcomm.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/binutils/elfcomm.c b/binutils/elfcomm.c index a50b1ec..64d4b213 100644 --- a/binutils/elfcomm.c +++ b/binutils/elfcomm.c @@ -586,6 +586,12 @@ get_archive_member_name (struct archive_info *arch, char *member_file_name; char *member_name; + if (arch->longnames == NULL || arch->longnames_size == 0) + { + error (_("Archive member uses long names, but no longname table found\n")); + return NULL; + } + arch->nested_member_origin = 0; k = j = strtoul (arch->arhdr.ar_name + 1, &endp, 10); if (arch->is_thin_archive && endp != NULL && * endp == ':') |