Page MenuHomeFreeBSD

D25086.diff
No OneTemporary

D25086.diff

Index: head/libexec/rtld-elf/rtld.h
===================================================================
--- head/libexec/rtld-elf/rtld.h
+++ head/libexec/rtld-elf/rtld.h
@@ -257,6 +257,7 @@
bool z_interpose : 1; /* Interpose all objects but main */
bool z_nodeflib : 1; /* Don't search default library path */
bool z_global : 1; /* Make the object global */
+ bool z_pie : 1; /* Object proclaimed itself PIE executable */
bool static_tls : 1; /* Needs static TLS allocation */
bool static_tls_copied : 1; /* Needs static TLS copying */
bool ref_nodel : 1; /* Refcount increased to prevent dlclose */
Index: head/libexec/rtld-elf/rtld.c
===================================================================
--- head/libexec/rtld-elf/rtld.c
+++ head/libexec/rtld-elf/rtld.c
@@ -1370,6 +1370,8 @@
obj->z_interpose = true;
if (dynp->d_un.d_val & DF_1_NODEFLIB)
obj->z_nodeflib = true;
+ if (dynp->d_un.d_val & DF_1_PIE)
+ obj->z_pie = true;
break;
default:
@@ -2580,6 +2582,10 @@
obj->path = path;
if (!digest_dynamic(obj, 0))
goto errp;
+ if (obj->z_pie) {
+ _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)) ==

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 21, 11:39 AM (2 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31907936
Default Alt Text
D25086.diff (1 KB)

Event Timeline