fix: whitelist environment variables instead of passing all of them

Earlier applied fix d5f4fc9b86 introduced
errors with interaction, because (in docker container) HOME variable was
passed also to subprocesses. This fix limits variables to be passed to
the whitelisted ones
This commit is contained in:
Evgenii Alekseev 2023-10-02 16:37:20 +03:00
parent 57c8ed3557
commit b198778810

View File

@ -129,7 +129,11 @@ def check_output(*args: str, exception: Exception | Callable[[int, list[str], st
environment = environment or {}
if user is not None:
environment["HOME"] = getpwuid(user).pw_dir
full_environment = os.environ | environment
full_environment = {
key: value
for key, value in os.environ.items()
if key in ("PATH",) # whitelisted variables only
} | environment
with subprocess.Popen(args, cwd=cwd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
user=user, env=full_environment, text=True, encoding="utf8", bufsize=1) as process: