summaryrefslogtreecommitdiff
path: root/src/ldso
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2014-07-11 00:29:44 -0400
committerRich Felker <dalias@aerifal.cx>2014-07-11 00:29:44 -0400
commit59549313d85fa9a0168ff8164cfe734255585f46 (patch)
tree32e5601edb10b897827a5f4edbb7ff6dee13cd26 /src/ldso
parent349381aa8c0fc385e54e1068dd5f2b27af55cd12 (diff)
downloadmusl-59549313d85fa9a0168ff8164cfe734255585f46.tar.gz
explicitly reject empty names in dynamic linker load_library function
previously passing an empty string for name resulted in failure, as expected, but only after spurious syscalls, and it produced confusing errno values (and thus dlerror strings). in addition to dlopen calls, this issue affected use of LD_PRELOAD with trailing whitespace or colon characters.
Diffstat (limited to 'src/ldso')
-rw-r--r--src/ldso/dynlink.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index 6b7f0f31..12f14f7b 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -663,6 +663,11 @@ static struct dso *load_library(const char *name, struct dso *needed_by)
int n_th = 0;
int is_self = 0;
+ if (!*name) {
+ errno = EINVAL;
+ return 0;
+ }
+
/* Catch and block attempts to reload the implementation itself */
if (name[0]=='l' && name[1]=='i' && name[2]=='b') {
static const char *rp, reserved[] =