240 XrdSysPriv::fgMutex.
Lock();
241 #if !defined(WINDOWS)
243 uid_t cruid = 0, ceuid = 0, csuid = 0;
244 if (
getresuid(&cruid, &ceuid, &csuid) != 0) {
245 XrdSysPriv::fgMutex.
UnLock();
250 uid_t crgid = 0, cegid = 0, csgid = 0;
251 if (
getresgid(&crgid, &cegid, &csgid) != 0) {
252 XrdSysPriv::fgMutex.
UnLock();
256 if (ceuid && XrdSysPriv::Restore(0) != 0) {
257 XrdSysPriv::fgMutex.
UnLock();
261 if (newgid != cegid || newgid != crgid) {
264 if (
setresgid(newgid, newgid, newgid) != 0) {
265 XrdSysPriv::fgMutex.
UnLock();
269 uid_t rgid = 0, egid = 0, sgid = 0;
270 if (
getresgid(&rgid, &egid, &sgid) != 0) {
271 XrdSysPriv::fgMutex.
UnLock();
275 if (rgid != newgid || egid != newgid) {
276 XrdSysPriv::fgMutex.
UnLock();
282 if (newuid != ceuid || newuid != cruid) {
285 if (
setresuid(newuid, newuid, newuid) != 0) {
286 XrdSysPriv::fgMutex.
UnLock();
290 uid_t ruid = 0, euid = 0, suid = 0;
291 if (
getresuid(&ruid, &euid, &suid) != 0) {
292 XrdSysPriv::fgMutex.
UnLock();
296 if (ruid != newuid || euid != newuid) {
297 XrdSysPriv::fgMutex.
UnLock();
303 XrdSysPriv::fgMutex.
UnLock();
static int getresgid(gid_t *r, gid_t *e, gid_t *)
static int setresgid(gid_t r, gid_t e, gid_t)
static int getresuid(uid_t *r, uid_t *e, uid_t *)
static int setresuid(uid_t r, uid_t e, uid_t)