From: Andreas Schneider Date: Sat, 8 Oct 2011 08:52:02 +0000 (+0200) Subject: uid_wrapper: Add uwrap_setresgid(). X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=f53096032d271360225b71a4bd258f717ac8d6e2;p=ddiss%2Fsamba.git uid_wrapper: Add uwrap_setresgid(). --- diff --git a/lib/uid_wrapper/uid_wrapper.c b/lib/uid_wrapper/uid_wrapper.c index 442e3493184..c43dbc14368 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 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(); diff --git a/lib/uid_wrapper/uid_wrapper.h b/lib/uid_wrapper/uid_wrapper.h index 27b7abccb3f..7cb97af8dfb 100644 --- a/lib/uid_wrapper/uid_wrapper.h +++ b/lib/uid_wrapper/uid_wrapper.h @@ -1,5 +1,6 @@ /* Copyright (C) Andrew Tridgell 2009 + Copyright (c) 2011 Andreas Schneider 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 @@ -57,6 +58,11 @@ gid_t uwrap_getgid(void); #endif #define setregid uwrap_setregid +#ifdef setresgid +#undef setresgid +#endif +#define setresgid uwrap_setresgid + #ifdef geteuid #undef geteuid #endif