summaryrefslogtreecommitdiff
path: root/lib/uid_wrapper/uid_wrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/uid_wrapper/uid_wrapper.c')
-rw-r--r--lib/uid_wrapper/uid_wrapper.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/uid_wrapper/uid_wrapper.c b/lib/uid_wrapper/uid_wrapper.c
index 442e349318..c43dbc1436 100644
--- a/lib/uid_wrapper/uid_wrapper.c
+++ b/lib/uid_wrapper/uid_wrapper.c
@@ -1,5 +1,6 @@
/*
Copyright (C) Andrew Tridgell 2009
+ Copyright (c) 2011 Andreas Schneider <asn@samba.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -160,6 +161,23 @@ _PUBLIC_ int uwrap_setregid(gid_t rgid, gid_t egid)
}
#endif
+#ifdef HAVE_SETRESGID
+_PUBLIC_ int uwrap_setresgid(gid_t rgid, gid_t egid, gid_t sgid)
+{
+ uwrap_init();
+ if (!uwrap.enabled) {
+ return setresgid(rgid, egid, sgid);
+ }
+ /* assume for now that the ruid stays as root */
+ if (egid == 0) {
+ uwrap.egid = uwrap.mygid;
+ } else {
+ uwrap.egid = egid;
+ }
+ return 0;
+}
+#endif
+
_PUBLIC_ uid_t uwrap_getegid(void)
{
uwrap_init();