summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authordsl <dsl@NetBSD.org>2003-05-28 20:45:39 +0000
committerdsl <dsl@NetBSD.org>2003-05-28 20:45:39 +0000
commitb5a44ece1f080398839610aa24ef8d8bd1e0dddd (patch)
tree6f195a06ef2ab9d107523b3d62a5ee3bee1c2b18 /usr.bin
parent9a398ec067e79750c8a4eb3dd4214baa7993d67d (diff)
Look at mode of program being run, not of ldd when deciding whether to
use LD_LIBRARY_PATH.
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/ldd/ldd_elf/ldd.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/usr.bin/ldd/ldd_elf/ldd.c b/usr.bin/ldd/ldd_elf/ldd.c
index a479413fd24..d906093a043 100644
--- a/usr.bin/ldd/ldd_elf/ldd.c
+++ b/usr.bin/ldd/ldd_elf/ldd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ldd.c,v 1.18 2003/04/23 21:39:08 mycroft Exp $ */
+/* $NetBSD: ldd.c,v 1.19 2003/05/28 20:45:39 dsl Exp $ */
/*-
* Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -115,13 +115,6 @@ main(int argc, char **argv)
_rtld_pagesz = sysconf(_SC_PAGESIZE);
- _rtld_trust = geteuid() == getuid() && getegid() == getgid();
- if (_rtld_trust) {
- _rtld_add_paths(&_rtld_paths, getenv("LD_LIBRARY_PATH"));
- }
-
- _rtld_process_hints(&_rtld_paths, &_rtld_xforms, _PATH_LD_HINTS);
-
for (argc--, argv++; argc != 0; argc--, argv++) {
int fd = open(*argv, O_RDONLY);
if (fd == -1) {
@@ -133,6 +126,13 @@ main(int argc, char **argv)
close(fd);
continue;
}
+
+ _rtld_paths = NULL;
+ _rtld_trust = (st.st_mode & (S_ISUID | S_ISGID)) == 0;
+ if (_rtld_trust)
+ _rtld_add_paths(&_rtld_paths, getenv("LD_LIBRARY_PATH"));
+
+ _rtld_process_hints(&_rtld_paths, &_rtld_xforms, _PATH_LD_HINTS);
_rtld_objmain = _rtld_map_object(xstrdup(*argv), fd, &st);
if (_rtld_objmain == NULL) {
if (ldd_aout(*argv, fd) < 0)