From 49d0aaf4077d46db9c0bbe63169bf28ca6bf7b28 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Fri, 30 Mar 2012 09:44:25 -0400 Subject: [PATCH] Add execvpe(), exect(), posix_spawn() and posix_spawnp() wrappers to sudo_noexec.c. --HG-- branch : 1.7 --- config.h.in | 3 +++ configure | 2 +- configure.in | 2 +- sudo_noexec.c | 22 ++++++++++++++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/config.h.in b/config.h.in index c796855bc..cce0a7cba 100644 --- a/config.h.in +++ b/config.h.in @@ -477,6 +477,9 @@ /* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF +/* Define to 1 if you have the header file. */ +#undef HAVE_SPAWN_H + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H diff --git a/configure b/configure index 2c159c40f..e4cdc97f9 100755 --- a/configure +++ b/configure @@ -15040,7 +15040,7 @@ $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi -for ac_header in malloc.h paths.h utime.h netgroup.h sys/sockio.h sys/bsdtypes.h sys/select.h sys/stropts.h sys/sysmacros.h +for ac_header in malloc.h netgroup.h paths.h spawn.h utime.h sys/sockio.h sys/bsdtypes.h sys/select.h sys/stropts.h sys/sysmacros.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" diff --git a/configure.in b/configure.in index 09d9aea96..3e9243e6b 100644 --- a/configure.in +++ b/configure.in @@ -1928,7 +1928,7 @@ dnl AC_HEADER_STDC AC_HEADER_DIRENT AC_HEADER_TIME -AC_CHECK_HEADERS(malloc.h paths.h utime.h netgroup.h sys/sockio.h sys/bsdtypes.h sys/select.h sys/stropts.h sys/sysmacros.h) +AC_CHECK_HEADERS(malloc.h netgroup.h paths.h spawn.h utime.h sys/sockio.h sys/bsdtypes.h sys/select.h sys/stropts.h sys/sysmacros.h) dnl dnl Check for large file support. HP-UX 11.23 has a broken sys/type.h dnl when large files support is enabled so work around it. diff --git a/sudo_noexec.c b/sudo_noexec.c index 1e5cad79f..9eaa5d507 100644 --- a/sudo_noexec.c +++ b/sudo_noexec.c @@ -27,6 +27,9 @@ #else # include #endif +#ifdef HAVE_SPAWN_H +# include +#endif #include "missing.h" @@ -56,6 +59,11 @@ int \ fn(t1 a1, t2 a2, t3 a3) \ DUMMY_BODY +#define DUMMY6(fn, t1, t2, t3, t4, t5, t6) \ +int \ +fn(t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6) \ +DUMMY_BODY + #define DUMMY_VA(fn, t1, t2) \ int \ fn(t1 a1, t2 a2, ...) \ @@ -92,6 +100,9 @@ DUMMY_VA(__execle, const char *, const char *) DUMMY_VA(execlp, const char *, const char *) DUMMY_VA(_execlp, const char *, const char *) DUMMY_VA(__execlp, const char *, const char *) +DUMMY3(exect, const char *, char * const *, char * const *) +DUMMY3(_exect, const char *, char * const *, char * const *) +DUMMY3(__exect, const char *, char * const *, char * const *) DUMMY2(execv, const char *, char * const *) DUMMY2(_execv, const char *, char * const *) DUMMY2(__execv, const char *, char * const *) @@ -104,6 +115,17 @@ DUMMY3(__execvP, const char *, const char *, char * const *) DUMMY3(execve, const char *, char * const *, char * const *) DUMMY3(_execve, const char *, char * const *, char * const *) DUMMY3(__execve, const char *, char * const *, char * const *) +DUMMY3(execvpe, const char *, char * const *, char * const *) +DUMMY3(_execvpe, const char *, char * const *, char * const *) +DUMMY3(__execvpe, const char *, char * const *, char * const *) DUMMY3(fexecve, int , char * const *, char * const *) DUMMY3(_fexecve, int , char * const *, char * const *) DUMMY3(__fexecve, int , char * const *, char * const *) +#ifdef HAVE_SPAWN_H +DUMMY6(posix_spawn, pid_t *, const char *, const posix_spawn_file_actions_t *, const posix_spawnattr_t *, char * const *, char * const *) +DUMMY6(_posix_spawn, pid_t *, const char *, const posix_spawn_file_actions_t *, const posix_spawnattr_t *, char * const *, char * const *) +DUMMY6(__posix_spawn, pid_t *, const char *, const posix_spawn_file_actions_t *, const posix_spawnattr_t *, char * const *, char * const *) +DUMMY6(posix_spawnp, pid_t *, const char *, const posix_spawn_file_actions_t *, const posix_spawnattr_t *, char * const *, char * const *) +DUMMY6(_posix_spawnp, pid_t *, const char *, const posix_spawn_file_actions_t *, const posix_spawnattr_t *, char * const *, char * const *) +DUMMY6(__posix_spawnp, pid_t *, const char *, const posix_spawn_file_actions_t *, const posix_spawnattr_t *, char * const *, char * const *) +#endif /* HAVE_SPAWN_H */ -- 2.40.0