handle library paths better (ignore empty path components, etc.)
This commit is contained in:
parent
e8b8f3c90e
commit
49388f3b7b
1 changed files with 5 additions and 3 deletions
|
|
@ -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)
|
static int path_open(const char *name, const char *search)
|
||||||
{
|
{
|
||||||
char buf[2*NAME_MAX+2];
|
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, ':');
|
z = strchr(s, ':');
|
||||||
l = z ? z-s : strlen(s);
|
l = z ? z-s : strlen(s);
|
||||||
snprintf(buf, sizeof buf, "%.*s/%s", l, s, name);
|
snprintf(buf, sizeof buf, "%.*s/%s", l, s, name);
|
||||||
if ((fd = open(buf, O_RDONLY))>=0) return fd;
|
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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue