X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fldso%2Fdynlink.c;h=263593ab75531e45e9d3f04f5f5740f68c611220;hb=d93e028c6bbd491592313fc77e056f6424ea4668;hp=49ea5e9cb2d0d36620e042a03e62c4cd50ce130a;hpb=f7d15dcc543c3b65c751064a5e51a0ec462f3cdb;p=musl diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index 49ea5e9c..263593ab 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -60,7 +60,7 @@ struct dso { size_t map_len; dev_t dev; ino_t ino; - char global; + signed char global; char relocated; char constructed; struct dso **deps; @@ -766,7 +766,9 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra) if (p == RTLD_NEXT) { for (p=head; p && (unsigned char *)ra-p->map>p->map_len; p=p->next); if (!p) p=head; - p=p->next; + void *res = find_sym(p->next, s, 0); + if (!res) goto failed; + return res; } if (p == head || p == RTLD_DEFAULT) { void *res = find_sym(head, s, 0);