From: Markus Lehtonen Date: Mon, 16 Feb 2015 13:22:16 +0000 (+0200) Subject: More fine-grained exception handling when setting UID/GID X-Git-Tag: submit/devel/20190730.075437~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=be692c6b50b5d3947c20aba4e41cfb7239d607be;p=services%2Fobs-service-git-buildpackage.git More fine-grained exception handling when setting UID/GID Change-Id: Iabce1dbd5b9e5f533ec454ac31a49a5c9e336dc2 Signed-off-by: Markus Lehtonen --- diff --git a/obs_service_gbp_utils/__init__.py b/obs_service_gbp_utils/__init__.py index adab9f6..5e64a0e 100644 --- a/obs_service_gbp_utils/__init__.py +++ b/obs_service_gbp_utils/__init__.py @@ -54,17 +54,22 @@ class GbpChildBTError(Exception): def _demoted_child_call(uid, gid, ret_data_q, func): """Call a function/method with different uid/gid""" # Set UID and GID - try: - if gid and gid > 0: + if gid and gid > 0: + try: os.setresgid(gid, gid, gid) - if uid and uid > 0: + except OSError as err: + ret_data_q.put(GbpServiceError("Setting GID (%s) failed: %s" % + (gid, err))) + sys.exit(_RET_FORK_ERR) + if uid and uid > 0: + try: os.setresuid(uid, uid, uid) # Set environment os.environ['HOME'] = pwd.getpwuid(uid).pw_dir - except OSError as err: - ret_data_q.put(GbpServiceError("Setting UID/GID (%s:%s) failed: %s" % - (uid, gid, err))) - sys.exit(_RET_FORK_ERR) + except OSError as err: + ret_data_q.put(GbpServiceError("Setting UID (%s) failed: %s" % + (uid, err))) + sys.exit(_RET_FORK_ERR) # Call the function try: # Func must be a callable without arguments