mirror of
https://github.com/borgbackup/borg.git
synced 2026-06-09 08:51:54 -04:00
serve: fix forced command lines containing BORG_ env vars
This commit is contained in:
parent
f878678b0c
commit
88dfb3e9c5
2 changed files with 11 additions and 0 deletions
|
|
@ -4,6 +4,7 @@ import faulthandler
|
|||
import functools
|
||||
import hashlib
|
||||
import inspect
|
||||
import itertools
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
|
|
@ -3306,6 +3307,9 @@ class Archiver:
|
|||
if cmd is not None and result.func == self.do_serve:
|
||||
forced_result = result
|
||||
argv = shlex.split(cmd)
|
||||
# Drop environment variables (do *not* interpret them) before trying to parse
|
||||
# the borg command line.
|
||||
argv = list(itertools.dropwhile(lambda arg: '=' in arg, argv))
|
||||
result = self.parse_args(argv[1:])
|
||||
if result.func != forced_result.func:
|
||||
# someone is trying to execute a different borg subcommand, don't do that!
|
||||
|
|
|
|||
|
|
@ -2841,6 +2841,13 @@ def test_get_args():
|
|||
'borg init --encryption=repokey /')
|
||||
assert args.func == archiver.do_serve
|
||||
|
||||
# Check that environment variables in the forced command don't cause issues. If the command
|
||||
# were not forced, environment variables would be interpreted by the shell, but this does not
|
||||
# happen for forced commands - we get the verbatim command line and need to deal with env vars.
|
||||
args = archiver.get_args(['borg', 'serve', ],
|
||||
'BORG_HOSTNAME_IS_UNIQUE=yes borg serve --info')
|
||||
assert args.func == archiver.do_serve
|
||||
|
||||
|
||||
def test_compare_chunk_contents():
|
||||
def ccc(a, b):
|
||||
|
|
|
|||
Loading…
Reference in a new issue