diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-05-04 20:18:18 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-05-04 20:18:18 -0400 |
commit | 4027f4e8f948c26be5e61c774f9f9ce9af8942b5 (patch) | |
tree | ce1fa375e90bd90fb48b63c2885f9230ab366c9b /src/ldso/dynlink.c | |
parent | db4096c5f2ffb15e52015004ab5a900b820c6683 (diff) | |
download | musl-4027f4e8f948c26be5e61c774f9f9ce9af8942b5.tar.gz musl-4027f4e8f948c26be5e61c774f9f9ce9af8942b5.tar.xz musl-4027f4e8f948c26be5e61c774f9f9ce9af8942b5.zip |
fix error reporting for dlsym with global symbols
Diffstat (limited to 'src/ldso/dynlink.c')
-rw-r--r-- | src/ldso/dynlink.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index b51ae77f..02c880b4 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -723,7 +723,7 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra) } if (p == head || p == RTLD_DEFAULT) { void *res = find_sym(head, s, 0); - if (!res) errflag = 1; + if (!res) goto failed; return res; } h = hash(s); @@ -736,6 +736,7 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra) if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES)) return p->deps[i]->base + sym->st_value; } +failed: errflag = 1; snprintf(errbuf, sizeof errbuf, "Symbol not found: %s", s); return 0; |