summaryrefslogtreecommitdiffstats
path: root/main/uclibc/0001-ldd-segfault-fix.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/uclibc/0001-ldd-segfault-fix.patch')
-rw-r--r--main/uclibc/0001-ldd-segfault-fix.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/main/uclibc/0001-ldd-segfault-fix.patch b/main/uclibc/0001-ldd-segfault-fix.patch
new file mode 100644
index 000000000..4384fa548
--- /dev/null
+++ b/main/uclibc/0001-ldd-segfault-fix.patch
@@ -0,0 +1,49 @@
+From f29b6882327573ec4e694c1c852307c957d544b9 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 5 May 2009 14:10:42 +0000
+Subject: [PATCH] ldd segfault fix
+
+Fixes ldd segfault on this testcase:
+
+extern void _dl_getenv(void);
+void foo(void)
+{
+ printf("foo: %x\n", &_dl_getenv);
+}
+
+linked as -shared
+---
+ utils/ldd.c | 8 +++++---
+ 1 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/utils/ldd.c b/utils/ldd.c
+index 1f1dc25..2cd173c 100644
+--- a/utils/ldd.c
++++ b/utils/ldd.c
+@@ -576,18 +576,20 @@ static struct library *find_elf_interpreter(ElfW(Ehdr) *ehdr)
+ }
+ newlib->name = NULL;
+ newlib->path = NULL;
+- return NULL;
++ break;
+ }
+ }
+- if (newlib == NULL)
++ if (newlib == NULL) {
+ newlib = malloc(sizeof(struct library));
++ if (newlib)
++ newlib->next = NULL;
++ }
+ if (!newlib)
+ return NULL;
+ newlib->name = malloc(strlen(s) + 1);
+ strcpy(newlib->name, s);
+ newlib->path = strdup(newlib->name);
+ newlib->resolved = 1;
+- newlib->next = NULL;
+
+ #if 0
+ /*printf("find_elf_interpreter is adding '%s' to '%s'\n", newlib->name, newlib->path); */
+--
+1.6.2.3
+