]> mj.ucw.cz Git - suidgw.git/blobdiff - suidgw.c
make install
[suidgw.git] / suidgw.c
index e8196aca913e1dba20b47200e3a55cd53276723c..63ac0d34123db5337cde2e8838b333974f7e33ad 100644 (file)
--- a/suidgw.c
+++ b/suidgw.c
@@ -6,6 +6,8 @@
 
 #undef DEBUG
 
+#define _GNU_SOURCE
+
 #include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
@@ -139,10 +141,10 @@ static void check_stat(void)
 
 static void switch_ugid(void)
 {
-  if (setegid(use_gid) < 0)
+  if (setresgid(getgid(), use_gid, use_gid) < 0)
     die("Failed to set group id: %m");
 
-  if (seteuid(use_uid) < 0)
+  if (setresuid(getuid(), use_uid, use_uid) < 0)
     die("Failed to set user id: %m");
 }