uid_wrapper: Add uwrap_setregid().
authorAndreas Schneider <asn@samba.org>
Thu, 6 Oct 2011 14:52:03 +0000 (16:52 +0200)
committerAndreas Schneider <asn@samba.org>
Fri, 7 Oct 2011 08:24:08 +0000 (10:24 +0200)
lib/uid_wrapper/uid_wrapper.c
lib/uid_wrapper/uid_wrapper.h

index 091678f27bac4360e37013ab6d625b8f8cb88bd1..07ab6da7c70b808c826ed94d3bc6e854fbbf314a 100644 (file)
@@ -104,6 +104,17 @@ _PUBLIC_ int uwrap_setegid(gid_t egid)
        return 0;
 }
 
+_PUBLIC_ int uwrap_setregid(gid_t rgid, gid_t egid)
+{
+       uwrap_init();
+       if (!uwrap.enabled) {
+               return setregid(rgid, egid);
+       }
+       /* assume for now that the ruid stays as root */
+       uwrap.egid = egid;
+       return 0;
+}
+
 _PUBLIC_ uid_t uwrap_getegid(void)
 {
        uwrap_init();
index c0aebcfafcd0f7b3ad4175da7b1c2c4e1d3e45a6..78b6c388ed4aeae7566009cf1fbb73cc8a29d509 100644 (file)
@@ -24,6 +24,7 @@ int uwrap_seteuid(uid_t euid);
 int uwrap_setreuid(uid_t reuid, uid_t euid);
 uid_t uwrap_geteuid(void);
 int uwrap_setegid(gid_t egid);
+int uwrap_setregid(gid_t egid);
 uid_t uwrap_getegid(void);
 int uwrap_setgroups(size_t size, const gid_t *list);
 int uwrap_getgroups(int size, gid_t *list);
@@ -45,6 +46,11 @@ gid_t uwrap_getgid(void);
 #endif
 #define setegid        uwrap_setegid
 
+#ifdef setregid
+#undef setregid
+#endif
+#define setregid       uwrap_setegid
+
 #ifdef geteuid
 #undef geteuid
 #endif