aboutsummaryrefslogtreecommitdiff
path: root/libexec
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2020-06-16 21:29:02 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2020-06-16 21:29:02 +0000
commit512baba6a5c060c8a0eca291e0d0a379c1e784f9 (patch)
tree9931d5298dea4080198910b465d171a3ecae3abf /libexec
parent53b1c3203595579bd2f6c6fb0eea9551c7d7c8f4 (diff)
Notes
Diffstat (limited to 'libexec')
-rw-r--r--libexec/rtld-elf/rtld.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libexec/rtld-elf/rtld.c b/libexec/rtld-elf/rtld.c
index c6aa795bdb07f..4f24e0564a549 100644
--- a/libexec/rtld-elf/rtld.c
+++ b/libexec/rtld-elf/rtld.c
@@ -2612,12 +2612,13 @@ do_load_object(int fd, const char *name, char *path, struct stat *sbp,
obj->path = path;
if (!digest_dynamic(obj, 0))
goto errp;
- if (obj->z_pie) {
+ dbg("%s valid_hash_sysv %d valid_hash_gnu %d dynsymcount %d", obj->path,
+ obj->valid_hash_sysv, obj->valid_hash_gnu, obj->dynsymcount);
+ if (obj->z_pie && (flags & RTLD_LO_TRACE) == 0) {
+ dbg("refusing to load PIE executable \"%s\"", obj->path);
_rtld_error("Cannot load PIE binary %s as DSO", obj->path);
goto errp;
}
- dbg("%s valid_hash_sysv %d valid_hash_gnu %d dynsymcount %d", obj->path,
- obj->valid_hash_sysv, obj->valid_hash_gnu, obj->dynsymcount);
if (obj->z_noopen && (flags & (RTLD_LO_DLOPEN | RTLD_LO_TRACE)) ==
RTLD_LO_DLOPEN) {
dbg("refusing to load non-loadable \"%s\"", obj->path);