diff --git a/ChangeLog b/ChangeLog index d7006de26e..2131f37b24 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Sep 5 12:57:52 2014 Tanaka Akira + + * process.c (has_privilege): Refine uid/gid check. + Fri Sep 5 12:40:55 2014 Tanaka Akira * configure.in: Check sys/id.h, getuidx and getgidx for AIX. diff --git a/process.c b/process.c index cfa466bdaf..294f1be186 100644 --- a/process.c +++ b/process.c @@ -3346,7 +3346,7 @@ has_privilege(void) ret = getresuid(&ruid, &euid, &suid); if (ret == -1) rb_sys_fail("getresuid(2)"); - if (ruid != suid) + if (euid != suid) return 1; } #else @@ -3356,7 +3356,7 @@ has_privilege(void) } #endif - if (ruid == 0 || ruid != euid) + if (euid == 0 || euid != ruid) return 1; #ifdef HAVE_GETRESGID @@ -3366,7 +3366,7 @@ has_privilege(void) ret = getresgid(&rgid, &egid, &sgid); if (ret == -1) rb_sys_fail("getresgid(2)"); - if (rgid != sgid) + if (egid != sgid) return 0; } #else @@ -3376,7 +3376,7 @@ has_privilege(void) } #endif - if (rgid == 0 || rgid != egid) + if (egid == 0 || egid != rgid) return 1; return 0;