]> mj.ucw.cz Git - suidgw.git/commitdiff
Handle saved uid/gid properly
authorMartin Mares <mj@ucw.cz>
Tue, 12 Feb 2013 11:42:40 +0000 (12:42 +0100)
committerMartin Mares <mj@ucw.cz>
Tue, 12 Feb 2013 11:42:40 +0000 (12:42 +0100)
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");
 }