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

Collapse All | Expand All

(-)libexec/rtld-elf/rtld.c (-2 / +8 lines)
Lines 130-136 static int relocate_objects(Obj_Entry *, bool, Obj Link Here
130
static int resolve_objects_ifunc(Obj_Entry *first, bool bind_now,
130
static int resolve_objects_ifunc(Obj_Entry *first, bool bind_now,
131
    int flags, RtldLockState *lockstate);
131
    int flags, RtldLockState *lockstate);
132
static int rtld_dirname(const char *, char *);
132
static int rtld_dirname(const char *, char *);
133
static int rtld_dirname_abs(const char *, char *);
133
static int rtld_dirname_abs(char *, char *);
134
static void *rtld_dlopen(const char *name, int fd, int mode);
134
static void *rtld_dlopen(const char *name, int fd, int mode);
135
static void rtld_exit(void);
135
static void rtld_exit(void);
136
static char *search_library_path(const char *, const char *);
136
static char *search_library_path(const char *, const char *);
Lines 3559-3568 rtld_dirname(const char *path, char *bname) Link Here
3559
}
3559
}
3560
3560
3561
static int
3561
static int
3562
rtld_dirname_abs(const char *path, char *base)
3562
rtld_dirname_abs(char *path, char *base)
3563
{
3563
{
3564
	char base_rel[PATH_MAX];
3564
	char base_rel[PATH_MAX];
3565
	ssize_t len;
3565
3566
3567
	len = readlink(path, base_rel, sizeof(base_rel) - 1);
3568
	if (len != -1) {
3569
		base_rel[len] = '\0';
3570
		path = base_rel;
3571
	}
3566
	if (rtld_dirname(path, base) == -1)
3572
	if (rtld_dirname(path, base) == -1)
3567
		return (-1);
3573
		return (-1);
3568
	if (base[0] == '/')
3574
	if (base[0] == '/')

Return to bug 193009