diff options
Diffstat (limited to 'ldso/dynlink.c')
| -rw-r--r-- | ldso/dynlink.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/ldso/dynlink.c b/ldso/dynlink.c index 33802400..3741c30d 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -807,7 +807,16 @@ static int fixup_rpath(struct dso *p, char *buf, size_t buf_size)  		origin = p->name;  	}  	t = strrchr(origin, '/'); -	l = t ? t-origin : 0; +	if (t) { +		l = t-origin; +	} else { +		/* Normally p->name will always be an absolute or relative +		 * pathname containing at least one '/' character, but in the +		 * case where ldso was invoked as a command to execute a +		 * program in the working directory, app.name may not. Fix. */ +		origin = "."; +		l = 1; +	}  	p->rpath = malloc(strlen(p->rpath_orig) + n*l + 1);  	if (!p->rpath) return -1;  | 
