From 97b042a3085a90b776471390a79a4e9dc02b75e9 Mon Sep 17 00:00:00 2001 From: Pierre-Marc Fournier Date: Fri, 25 Sep 2009 12:03:06 -0400 Subject: [PATCH] libinterfork: add and execve override --- libinterfork/interfork.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/libinterfork/interfork.c b/libinterfork/interfork.c index 81f896e..cfdd2c4 100644 --- a/libinterfork/interfork.c +++ b/libinterfork/interfork.c @@ -22,6 +22,7 @@ #include "share/usterr.h" extern void ust_fork(void); +extern void ust_potential_exec(void); pid_t fork(void) { @@ -44,3 +45,24 @@ pid_t fork(void) return retval; } + +int execve(const char *filename, char *const argv[], char *const envp[]) +{ + static int (*plibc_func)(const char *filename, char *const argv[], char *const envp[]) = NULL; + + pid_t retval; + + if(plibc_func == NULL) { + plibc_func = dlsym(RTLD_NEXT, "execve"); + if(plibc_func == NULL) { + fprintf(stderr, "libcwrap: unable to find execve\n"); + return -1; + } + } + + ust_potential_exec(); + + retval = plibc_func(filename, argv, envp); + + return retval; +} -- 2.34.1