diff --git a/src/signal_handler.c b/src/signal_handler.c index 1892625acf7732b3b712a1c5d06214c1f9125dd1..c3f6297405b81aebe8e185da2805ae8abf986180 100644 --- a/src/signal_handler.c +++ b/src/signal_handler.c @@ -618,12 +618,14 @@ static HANDLE get_inheritable_handle(struct mapping *optional, * * only on UNIX: * - * uid int - * gid int - * nice int + * uid int + * gid int + * nice int + * noinitgroups int + * setgroups array(int) * * FIXME: - * Support for setresuid() and setresgid(). + * Support for setresgid(). */ #ifdef HAVE_GETPWENT @@ -886,7 +888,11 @@ void f_create_process(INT32 args) #ifdef HAVE_SETEUID seteuid(0); -#endif +#else /* !HAVE_SETEUID */ +#ifdef HAVE_SETRESUID + setresuid(0,0,-1); +#endif /* HAVE_SETRESUID */ +#endif /* HAVE_SETEUID */ if(optional) { @@ -1126,7 +1132,11 @@ void f_create_process(INT32 args) #ifdef HAVE_SETEUID seteuid(wanted_uid); -#endif +#else /* !HAVE_SETEUID */ +#ifdef HAVE_SETRESUID + setresuid(wanted_uid, wanted_uid, -1); +#endif /* HAVE_SETRESUID */ +#endif /* HAVE_SETEUID */ my_set_close_on_exec(0,0); my_set_close_on_exec(1,0);