Skip to content

Commit 60928f3

Browse files
Merge pull request #9333 from ThomasWaldmann/pw-env-var-ambiguity-master
passphrase: fail if multiple passphrase env vars are set, fixes #8834
2 parents 786a275 + a963011 commit 60928f3

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/borg/helpers/passphrase.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ class PasswordRetriesExceeded(Error):
4040

4141

4242
class Passphrase(str):
43+
@classmethod
44+
def _check_ambiguity(cls, vars):
45+
set_vars = [v for v in vars if v in os.environ]
46+
if len(set_vars) > 1:
47+
raise Error("More than one passphrase environment variable is set: " + ", ".join(set_vars))
48+
4349
@classmethod
4450
def _env_passphrase(cls, env_var, default=None):
4551
passphrase = os.environ.get(env_var, default)
@@ -48,6 +54,10 @@ def _env_passphrase(cls, env_var, default=None):
4854

4955
@classmethod
5056
def env_passphrase(cls, default=None, other=False):
57+
if other:
58+
cls._check_ambiguity(["BORG_OTHER_PASSPHRASE", "BORG_OTHER_PASSCOMMAND", "BORG_OTHER_PASSPHRASE_FD"])
59+
else:
60+
cls._check_ambiguity(["BORG_PASSPHRASE", "BORG_PASSCOMMAND", "BORG_PASSPHRASE_FD"])
5161
env_var = "BORG_OTHER_PASSPHRASE" if other else "BORG_PASSPHRASE"
5262
passphrase = cls._env_passphrase(env_var, default)
5363
if passphrase is not None:

0 commit comments

Comments
 (0)