From 2f7d7bdbb8db9bb43cb498f7cf129599539135be Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sat, 23 Sep 2017 20:04:47 +0200 Subject: [PATCH] use prepared env for calling BORG_PASSCOMMAND, fixes #3050 (cherry picked from commit 6a6fd318045ceea254871de8042944875781bb7f) --- src/borg/crypto/key.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/borg/crypto/key.py b/src/borg/crypto/key.py index 02cfed6e7..58f928023 100644 --- a/src/borg/crypto/key.py +++ b/src/borg/crypto/key.py @@ -23,6 +23,7 @@ from ..helpers import yes from ..helpers import get_keys_dir, get_security_dir from ..helpers import get_limited_unpacker from ..helpers import bin_to_hex +from ..helpers import prepare_subprocess_env from ..item import Key, EncryptedKey from ..platform import SaveFile from .nonces import NonceManager @@ -431,8 +432,10 @@ class Passphrase(str): def env_passcommand(cls, default=None): passcommand = os.environ.get('BORG_PASSCOMMAND', None) if passcommand is not None: + # passcommand is a system command (not inside pyinstaller env) + env = prepare_subprocess_env(system=True) try: - passphrase = subprocess.check_output(shlex.split(passcommand), universal_newlines=True) + passphrase = subprocess.check_output(shlex.split(passcommand), universal_newlines=True, env=env) except (subprocess.CalledProcessError, FileNotFoundError) as e: raise PasscommandFailure(e) return cls(passphrase.rstrip('\n'))