From 54482898abe8d6d937ee67ea5974cd8eae859c37 Mon Sep 17 00:00:00 2001 From: Bobby Bingham Date: Mon, 25 Jul 2016 22:52:58 -0500 Subject: treat null vdso base same as missing On s390x, the kernel provides AT_SYSINFO_EHDR, but sets it to zero, if the program being run does not have a program interpreter. This causes problems when running the dynamic linker directly. --- src/internal/vdso.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/internal/vdso.c b/src/internal/vdso.c index a4862171..d46d3228 100644 --- a/src/internal/vdso.c +++ b/src/internal/vdso.c @@ -45,6 +45,7 @@ void *__vdsosym(const char *vername, const char *name) size_t i; for (i=0; libc.auxv[i] != AT_SYSINFO_EHDR; i+=2) if (!libc.auxv[i]) return 0; + if (!libc.auxv[i+1]) return 0; Ehdr *eh = (void *)libc.auxv[i+1]; Phdr *ph = (void *)((char *)eh + eh->e_phoff); size_t *dynv=0, base=-1; -- cgit v1.2.1