uid_wrapper: Add uwrap_setresuid().
authorAndreas Schneider <asn@samba.org>
Fri, 7 Oct 2011 08:30:23 +0000 (10:30 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Fri, 7 Oct 2011 10:04:04 +0000 (12:04 +0200)
Autobuild-User: Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date: Fri Oct  7 12:04:05 CEST 2011 on sn-devel-104

lib/uid_wrapper/uid_wrapper.c
lib/uid_wrapper/uid_wrapper.h

index 07ab6da7c70b808c826ed94d3bc6e854fbbf314a..8229fbbd58e422d2a5930f57834ddcdaa2aad10d 100644 (file)
@@ -84,6 +84,17 @@ _PUBLIC_ int uwrap_setreuid(uid_t ruid, uid_t euid)
        return 0;
 }
 
+_PUBLIC_ int uwrap_setresuid(uid_t ruid, uid_t euid, uid_t suid)
+{
+       uwrap_init();
+       if (!uwrap.enabled) {
+               return setresuid(ruid, euid, suid);
+       }
+       /* assume for now that the ruid stays as root */
+       uwrap.euid = euid;
+       return 0;
+}
+
 _PUBLIC_ uid_t uwrap_geteuid(void)
 {
        uwrap_init();
index 78b6c388ed4aeae7566009cf1fbb73cc8a29d509..51a11c57f24eb0d30a9a6cb5eab45c53fd4746e1 100644 (file)
@@ -22,6 +22,7 @@
 int uwrap_enabled(void);
 int uwrap_seteuid(uid_t euid);
 int uwrap_setreuid(uid_t reuid, uid_t euid);
+int uwrap_setresuid(uid_t reuid, uid_t euid, uid_t suid);
 uid_t uwrap_geteuid(void);
 int uwrap_setegid(gid_t egid);
 int uwrap_setregid(gid_t egid);
@@ -41,6 +42,11 @@ gid_t uwrap_getgid(void);
 #endif
 #define setreuid       uwrap_setreuid
 
+#ifdef setresuid
+#undef setresuid
+#endif
+#define setresuid      uwrap_setresuid
+
 #ifdef setegid
 #undef setegid
 #endif