View | Details | Raw Unified | Return to bug 193009 | Differences between
and this patch

Collapse All | Expand All

(-)libexec/rtld-elf/rtld.c (-8 / +6 lines)
Lines 3561-3577 rtld_dirname(const char *path, char *bname) Link Here
3561
static int
3561
static int
3562
rtld_dirname_abs(const char *path, char *base)
3562
rtld_dirname_abs(const char *path, char *base)
3563
{
3563
{
3564
	char base_rel[PATH_MAX];
3564
	char *last;
3565
3565
3566
	if (rtld_dirname(path, base) == -1)
3566
	if (realpath(path, base) == NULL)
3567
		return (-1);
3567
		return (-1);
3568
	if (base[0] == '/')
3568
	last = strrchr(base, '/');
3569
		return (0);
3569
	if (last == NULL)
3570
	if (getcwd(base_rel, sizeof(base_rel)) == NULL ||
3571
	    strlcat(base_rel, "/", sizeof(base_rel)) >= sizeof(base_rel) ||
3572
	    strlcat(base_rel, base, sizeof(base_rel)) >= sizeof(base_rel))
3573
		return (-1);
3570
		return (-1);
3574
	strcpy(base, base_rel);
3571
	if (last != base)
3572
		*last = '\0';
3575
	return (0);
3573
	return (0);
3576
}
3574
}
3577
3575

Return to bug 193009