fix regression in dlsym: rejection of special RTLD_* handles as invalid
authorRich Felker <dalias@aerifal.cx>
Thu, 24 Jan 2013 01:21:36 +0000 (20:21 -0500)
committerRich Felker <dalias@aerifal.cx>
Thu, 24 Jan 2013 01:21:36 +0000 (20:21 -0500)
src/ldso/dynlink.c

index 6956f4148460ae595610c5670eb0384ba559cd8d..e73806cdf25614cecf325e0fef3c446a717796c9 100644 (file)
@@ -1119,7 +1119,8 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
                        return __tls_get_addr((size_t []){def.dso->tls_id, def.sym->st_value});
                return def.dso->base + def.sym->st_value;
        }
-       if (invalid_dso_handle(p)) return 0;
+       if (p != RTLD_DEFAULT && p != RTLD_NEXT && invalid_dso_handle(p))
+               return 0;
        if (p->ghashtab) {
                gh = gnu_hash(s);
                sym = gnu_lookup(s, gh, p);