From 9a8c988082282f920ccdd6257abe678dfb1aa7c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Tue, 3 Mar 1998 13:29:53 +0100
Subject: [PATCH] Added support for setresuid() in create_process().

Rev: src/signal_handler.c:1.36
---
 src/signal_handler.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/signal_handler.c b/src/signal_handler.c
index 1892625acf..c3f6297405 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);
-- 
GitLab