Browse Source

[Security] Use set*id() not sete*id

Ask Solem 13 years ago
parent
commit
b290f973ee
1 changed files with 13 additions and 5 deletions
  1. 13 5
      celery/platforms.py

+ 13 - 5
celery/platforms.py

@@ -333,17 +333,25 @@ def parse_gid(gid):
 def setegid(gid):
     """Set effective group id."""
     gid = parse_gid(gid)
-    if gid != os.getgid():
+    if gid != os.getegid():
         os.setegid(gid)
 
 
 def seteuid(uid):
     """Set effective user id."""
     uid = parse_uid(uid)
-    if uid != os.getuid():
+    if uid != os.geteuid():
         os.seteuid(uid)
 
 
+def setgid(gid):
+    os.setgid(parse_gid(gid))
+
+
+def setuid(uid):
+    os.setuid(parse_uid(uid))
+
+
 def set_effective_user(uid=None, gid=None):
     """Change process privileges to new user/group.
 
@@ -362,10 +370,10 @@ def set_effective_user(uid=None, gid=None):
         # If GID isn't defined, get the primary GID of the user.
         if not gid and pwd:
             gid = pwd.getpwuid(uid).pw_gid
-        setegid(gid)
-        seteuid(uid)
+            setgid(gid)
+        setuid(uid)
     else:
-        gid and setegid(gid)
+        gid and setgid(gid)
 
 
 class Signals(object):