fix bug in gnu hash lookup on dlsym(handle, name) lookups
authorRich Felker <dalias@aerifal.cx>
Sat, 25 Aug 2012 21:40:27 +0000 (17:40 -0400)
committerRich Felker <dalias@aerifal.cx>
Sat, 25 Aug 2012 21:40:27 +0000 (17:40 -0400)
wrong hash was being passed; just a copy/paste error. did not affect
lookups in the global namespace; this is probably why it was not
caught in testing.

src/ldso/dynlink.c

index 981288c35a36ed53eac7f8171064230cc63021f0..c733dc5d1d30b4d081fe1064491c52d241b2886b 100644 (file)
@@ -877,7 +877,7 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
        if (p->deps) for (i=0; p->deps[i]; i++) {
                if (p->deps[i]->ghashtab) {
                        if (!gh) gh = gnu_hash(s);
-                       sym = gnu_lookup(s, h, p->deps[i]);
+                       sym = gnu_lookup(s, gh, p->deps[i]);
                } else {
                        if (!h) h = sysv_hash(s);
                        sym = sysv_lookup(s, h, p->deps[i]);