summaryrefslogtreecommitdiff
path: root/src/ldso/dynlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ldso/dynlink.c')
-rw-r--r--src/ldso/dynlink.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index 390f50ba..57a5ba46 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -482,13 +482,6 @@ void *__dynlink(int argc, char **argv, size_t *got)
decode_vec(auxv, aux, AUX_CNT);
- for (i=0; auxv[i]; i+=2) {
- if (auxv[i]==AT_SYSINFO_EHDR) {
- vdso_base = auxv[i+1];
- break;
- }
- }
-
/* Only trust user/env if kernel says we're not suid/sgid */
if ((aux[0]&0x7800)!=0x7800 || aux[AT_UID]!=aux[AT_EUID]
|| aux[AT_GID]!=aux[AT_EGID] || aux[AT_SECURE]) {
@@ -496,6 +489,13 @@ void *__dynlink(int argc, char **argv, size_t *got)
env_preload = 0;
}
+ for (i=0; auxv[i]; i+=2) {
+ if (auxv[i]==AT_SYSINFO_EHDR) {
+ vdso_base = auxv[i+1];
+ break;
+ }
+ }
+
/* Relocate ldso's DYNAMIC pointer and load vector */
decode_vec((void *)(got[0] += aux[AT_BASE]), lib_dyn, DYN_CNT);