This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] Fix crash in gldelf64ppc_new_vers_pattern
- From: Andreas Schwab <schwab at suse dot de>
- To: binutils at sourceware dot org
- Date: Mon, 14 May 2007 00:41:48 +0200
- Subject: [PATCH] Fix crash in gldelf64ppc_new_vers_pattern
A version script with a literal name (in quotes) causes
gldelf64ppc_new_vers_pattern to crash because entry->pattern is NULL.
Andreas.
2007-05-14 Andreas Schwab <schwab@suse.de>
* emultempl/ppc64elf.em (_new_vers_pattern): Handle null pattern.
testsuite/:
* ld-elf/dl2a.list: New file.
* ld-elf/shared.exp: Add test using --dynamic-list=dl2a.list.
--- ld/emultempl/ppc64elf.em.~1.52.~ 2007-03-27 11:49:47.000000000 +0200
+++ ld/emultempl/ppc64elf.em 2007-05-14 00:33:24.000000000 +0200
@@ -414,17 +414,22 @@ gld${EMULATION_NAME}_new_vers_pattern (s
unsigned int len;
char *dot_pat;
- if (!dotsyms || entry->pattern[0] == '*' || entry->pattern[0] == '.')
+ if (!dotsyms
+ || (entry->pattern != NULL
+ && (entry->pattern[0] == '*' || entry->pattern[0] == '.')))
return entry;
dot_entry = xmalloc (sizeof *dot_entry);
*dot_entry = *entry;
dot_entry->next = entry;
- len = strlen (entry->pattern) + 2;
- dot_pat = xmalloc (len);
- dot_pat[0] = '.';
- memcpy (dot_pat + 1, entry->pattern, len - 1);
- dot_entry->pattern = dot_pat;
+ if (entry->pattern != NULL)
+ {
+ len = strlen (entry->pattern) + 2;
+ dot_pat = xmalloc (len);
+ dot_pat[0] = '.';
+ memcpy (dot_pat + 1, entry->pattern, len - 1);
+ dot_entry->pattern = dot_pat;
+ }
if (entry->symbol != NULL)
{
len = strlen (entry->symbol) + 2;
--- /dev/null 2006-11-24 23:46:54.000000000 +0100
+++ ld/testsuite/ld-elf/dl2a.list 2007-05-14 00:13:27.000000000 +0200
@@ -0,0 +1,3 @@
+{
+ "foo";
+};
--- ld/testsuite/ld-elf/shared.exp.~1.6.~ 2007-02-16 11:08:52.000000000 +0100
+++ ld/testsuite/ld-elf/shared.exp 2007-05-14 00:14:12.000000000 +0200
@@ -75,6 +75,9 @@ set build_tests {
{"Build libdl2a.so with --dynamic-list=dl2.list"
"-shared -Wl,--dynamic-list=dl2.list" "-fPIC"
{dl2.c dl2xxx.c} {} "libdl2a.so"}
+ {"Build libdl2a.so with --dynamic-list=dl2a.list"
+ "-shared -Wl,--dynamic-list=dl2a.list" "-fPIC"
+ {dl2.c dl2xxx.c} {} "libdl2a.so"}
{"Build libdl2a.so with --dynamic-list-data"
"-shared -Wl,--dynamic-list-data" "-fPIC"
{dl2.c dl2xxx.c} {} "libdl2a.so"}
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."