X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Fldso%2Fdynlink.c;h=472e389d6ccc89bd16a5c774abb03f4ae5e0ca57;hp=56ba89eb57b4f20f90ed2753de1d2df84b2ea80f;hb=49388f3b7b72a1695bef05f64439b602b2e77a53;hpb=e8b8f3c90e02d8fa077be0f273fce1e48e2719d2 diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index 56ba89eb..472e389d 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -208,15 +208,17 @@ static void *map_library(int fd, size_t *lenp, unsigned char **basep, size_t *dy static int path_open(const char *name, const char *search) { char buf[2*NAME_MAX+2]; - const char *s, *z; + const char *s=search, *z; int l, fd; - for (s=search; *s; s+=l+!!z) { + for (;;) { + while (*s==':') s++; + if (!*s) return -1; z = strchr(s, ':'); l = z ? z-s : strlen(s); snprintf(buf, sizeof buf, "%.*s/%s", l, s, name); if ((fd = open(buf, O_RDONLY))>=0) return fd; + s += l; } - return -1; } static struct dso *load_library(const char *name)