diff --git a/NEWS b/NEWS index fd41e40c1..3ae8b8e66 100644 --- a/NEWS +++ b/NEWS @@ -16,6 +16,8 @@ https://torsion.org/borgmatic/docs/how-to/backup-your-databases/#containers * #1037: Fix an error with the "extract" action when both a remote repository and a "working_directory" are used. + * #1044: Fix an error in the systemd credential hook when the credential name contains a "." + chararcter. 1.9.14 * #409: With the PagerDuty monitoring hook, send borgmatic logs to PagerDuty so they show up in the diff --git a/borgmatic/hooks/credential/systemd.py b/borgmatic/hooks/credential/systemd.py index 1de245a38..9cce0d7b2 100644 --- a/borgmatic/hooks/credential/systemd.py +++ b/borgmatic/hooks/credential/systemd.py @@ -5,7 +5,7 @@ import re logger = logging.getLogger(__name__) -CREDENTIAL_NAME_PATTERN = re.compile(r'^\w+$') +CREDENTIAL_NAME_PATTERN = re.compile(r'^[\w.-]+$') def load_credential(hook_config, config, credential_parameters): diff --git a/tests/unit/hooks/credential/test_systemd.py b/tests/unit/hooks/credential/test_systemd.py index 603c85698..32133883c 100644 --- a/tests/unit/hooks/credential/test_systemd.py +++ b/tests/unit/hooks/credential/test_systemd.py @@ -42,12 +42,12 @@ def test_load_credential_reads_named_credential_from_file(): '/var' ) credential_stream = io.StringIO('password') - credential_stream.name = '/var/mycredential' + credential_stream.name = '/var/borgmatic.pw' builtins = flexmock(sys.modules['builtins']) - builtins.should_receive('open').with_args('/var/mycredential').and_return(credential_stream) + builtins.should_receive('open').with_args('/var/borgmatic.pw').and_return(credential_stream) assert ( - module.load_credential(hook_config={}, config={}, credential_parameters=('mycredential',)) + module.load_credential(hook_config={}, config={}, credential_parameters=('borgmatic.pw',)) == 'password' )