Explorar o código

fix regression in dlsym: rejection of special RTLD_* handles as invalid

Rich Felker %!s(int64=12) %!d(string=hai) anos
pai
achega
637dd2d383
Modificáronse 1 ficheiros con 2 adicións e 1 borrados
  1. 2 1
      src/ldso/dynlink.c

+ 2 - 1
src/ldso/dynlink.c

@@ -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);