mirror of
https://github.com/borgbackup/borg.git
synced 2025-02-22 14:11:27 +00:00
format_line: deny conversions (!r, !s, !a)
This commit is contained in:
parent
e2e172c74f
commit
1bd381a13a
2 changed files with 8 additions and 3 deletions
|
@ -784,9 +784,10 @@ def __format__(self, format_spec):
|
|||
|
||||
|
||||
def format_line(format, data):
|
||||
keys = [f[1] for f in Formatter().parse(format)]
|
||||
for key in keys:
|
||||
if '.' in key or '__' in key:
|
||||
for _, key, _, conversion in Formatter().parse(format):
|
||||
if not key:
|
||||
continue
|
||||
if '.' in key or '__' in key or conversion:
|
||||
raise InvalidPlaceholder(key, format)
|
||||
try:
|
||||
return format.format(**data)
|
||||
|
|
|
@ -1213,6 +1213,10 @@ def test_format_line_erroneous():
|
|||
assert format_line('{invalid}', data)
|
||||
with pytest.raises(PlaceholderError):
|
||||
assert format_line('{}', data)
|
||||
with pytest.raises(PlaceholderError):
|
||||
assert format_line('{now!r}', data)
|
||||
with pytest.raises(PlaceholderError):
|
||||
assert format_line('{now.__class__.__module__.__builtins__}', data)
|
||||
|
||||
|
||||
def test_replace_placeholders():
|
||||
|
|
Loading…
Reference in a new issue