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

index 05d226b034ca2a59795920bced74bbc708b1bc46..091678f27bac4360e37013ab6d625b8f8cb88bd1 100644 (file)
@@ -73,6 +73,17 @@ _PUBLIC_ int uwrap_seteuid(uid_t euid)
        return 0;
 }
 
+_PUBLIC_ int uwrap_setreuid(uid_t ruid, uid_t euid)
+{
+       uwrap_init();
+       if (!uwrap.enabled) {
+               return setreuid(ruid, euid);
+       }
+       /* assume for now that the ruid stays as root */
+       uwrap.euid = euid;
+       return 0;
+}
+
 _PUBLIC_ uid_t uwrap_geteuid(void)
 {
        uwrap_init();
index b3b11d954ae4ffcfaedebd636b1a35a70c3714b0..c0aebcfafcd0f7b3ad4175da7b1c2c4e1d3e45a6 100644 (file)
@@ -21,6 +21,7 @@
 
 int uwrap_enabled(void);
 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);
 uid_t uwrap_getegid(void);
@@ -34,6 +35,11 @@ gid_t uwrap_getgid(void);
 #endif
 #define seteuid        uwrap_seteuid
 
+#ifdef setreuid
+#undef setreuid
+#endif
+#define setreuid       uwrap_setreuid
+
 #ifdef setegid
 #undef setegid
 #endif