summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/env/__init_security.c21
-rw-r--r--src/env/__libc_start_main.c16
2 files changed, 14 insertions, 23 deletions
diff --git a/src/env/__init_security.c b/src/env/__init_security.c
deleted file mode 100644
index ae623955..00000000
--- a/src/env/__init_security.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#include <elf.h>
-#include <poll.h>
-#include <fcntl.h>
-#include "syscall.h"
-#include "libc.h"
-#include "atomic.h"
-
-void __init_security(size_t *aux)
-{
- struct pollfd pfd[3] = { {.fd=0}, {.fd=1}, {.fd=2} };
- int i;
-
- if (aux[AT_UID]==aux[AT_EUID] && aux[AT_GID]==aux[AT_EGID]
- && !aux[AT_SECURE]) return;
-
- __syscall(SYS_poll, pfd, 3, 0);
- for (i=0; i<3; i++) if (pfd[i].revents&POLLNVAL)
- if (__syscall(SYS_open, "/dev/null", O_RDWR|O_LARGEFILE)<0)
- a_crash();
- libc.secure = 1;
-}
diff --git a/src/env/__libc_start_main.c b/src/env/__libc_start_main.c
index 539f72e5..d7ec3abd 100644
--- a/src/env/__libc_start_main.c
+++ b/src/env/__libc_start_main.c
@@ -1,8 +1,11 @@
#include <elf.h>
+#include <poll.h>
+#include <fcntl.h>
+#include "syscall.h"
+#include "atomic.h"
#include "libc.h"
void __init_tls(size_t *);
-void __init_security(size_t *);
#ifndef SHARED
static void dummy() {}
@@ -37,7 +40,16 @@ void __init_libc(char **envp, char *pn)
__init_tls(aux);
__init_ssp((void *)aux[AT_RANDOM]);
- __init_security(aux);
+
+ if (aux[AT_UID]==aux[AT_EUID] && aux[AT_GID]==aux[AT_EGID]
+ && !aux[AT_SECURE]) return;
+
+ struct pollfd pfd[3] = { {.fd=0}, {.fd=1}, {.fd=2} };
+ __syscall(SYS_poll, pfd, 3, 0);
+ for (i=0; i<3; i++) if (pfd[i].revents&POLLNVAL)
+ if (__syscall(SYS_open, "/dev/null", O_RDWR|O_LARGEFILE)<0)
+ a_crash();
+ libc.secure = 1;
}
int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv)