projects
/
musl
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e8b8f3c
)
handle library paths better (ignore empty path components, etc.)
author
Rich Felker
<dalias@aerifal.cx>
Sat, 25 Jun 2011 21:49:16 +0000
(17:49 -0400)
committer
Rich Felker
<dalias@aerifal.cx>
Sat, 25 Jun 2011 21:49:16 +0000
(17:49 -0400)
src/ldso/dynlink.c
patch
|
blob
|
history
diff --git
a/src/ldso/dynlink.c
b/src/ldso/dynlink.c
index
56ba89e
..
472e389
100644
(file)
--- 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];
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;
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;
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)
}
static struct dso *load_library(const char *name)