explicitly reject empty names in dynamic linker load_library function
authorRich Felker <dalias@aerifal.cx>
Fri, 11 Jul 2014 04:29:44 +0000 (00:29 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 11 Jul 2014 04:29:44 +0000 (00:29 -0400)
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.

src/ldso/dynlink.c

index 6b7f0f31a70eaaf384a49b500946aa22bf4248c4..12f14f7b6b373f6688e3f79085162ddd9deda0de 100644 (file)
@@ -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[] =