ipa/0001-Don-t-install-a-preexec_fn-by-default.patch

51 lines
1.7 KiB
Diff
Raw Normal View History

From 7ee24413f0945b7d582a33795cdfc7c59471cb69 Mon Sep 17 00:00:00 2001
From: Christian Heimes <cheimes@redhat.com>
Date: Mon, 7 Oct 2019 21:58:00 +0200
Subject: [PATCH] Don't install a preexec_fn by default
ipautil.run() now only installs a preexec_fn when it is actually needed.
This addresses a compatibility issue with mod_wsgi subinterpreters under
Python 3.8.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1759290
See: https://bugs.python.org/issue37951
Signed-off-by: Christian Heimes <cheimes@redhat.com>
---
ipapython/ipautil.py | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py
index d87b9e3c1..e047324d3 100644
--- a/ipapython/ipautil.py
+++ b/ipapython/ipautil.py
@@ -515,14 +515,18 @@ def run(args, stdin=None, raiseonerr=True, nolog=(), env=None,
for group, gid in zip(suplementary_groups, suplementary_gids):
logger.debug('suplementary_group=%s (GID %d)', group, gid)
- def preexec_fn():
- if runas is not None:
- os.setgroups(suplementary_gids)
- os.setregid(pent.pw_gid, pent.pw_gid)
- os.setreuid(pent.pw_uid, pent.pw_uid)
-
- if umask:
- os.umask(umask)
+ if runas is not None or umask is not None:
+ # preexec function is not supported in WSGI environment
+ def preexec_fn():
+ if runas is not None:
+ os.setgroups(suplementary_gids)
+ os.setregid(pent.pw_gid, pent.pw_gid)
+ os.setreuid(pent.pw_uid, pent.pw_uid)
+
+ if umask is not None:
+ os.umask(umask)
+ else:
+ preexec_fn = None
try:
# pylint: disable=subprocess-popen-preexec-fn
--
2.20.1