Skip to content

Commit 28b79d7

Browse files
committed
tests: check if calls are using only allowed characters
Detect issues like QubesOS/qubes-issues#10040 earlier next time.
1 parent cb49d11 commit 28b79d7

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

qubesadmin/tests/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
# pylint: disable=missing-docstring
2222

23+
import string
2324
import subprocess
2425
import traceback
2526
import unittest
@@ -29,6 +30,7 @@
2930
import qubesadmin
3031
import qubesadmin.app
3132

33+
QREXEC_ALLOWED_CHARS = string.ascii_letters + string.digits + "_-+."
3234

3335
class TestVM(object):
3436
def __init__(self, name, **kwargs):
@@ -162,6 +164,9 @@ def __init__(self):
162164

163165
def qubesd_call(self, dest, method, arg=None, payload=None,
164166
payload_stream=None):
167+
if arg:
168+
assert all(c in QREXEC_ALLOWED_CHARS for c in arg), \
169+
f"forbidden char in service arg '{arg}"
165170
if payload_stream:
166171
payload = (payload or b'') + payload_stream.read()
167172
call_key = (dest, method, arg, payload)
@@ -178,6 +183,8 @@ def qubesd_call(self, dest, method, arg=None, payload=None,
178183

179184
def run_service(self, dest, service, **kwargs):
180185
# pylint: disable=arguments-differ
186+
assert all(c in QREXEC_ALLOWED_CHARS for c in service), \
187+
f"forbidden char in service '{service}"
181188
self.service_calls.append((dest, service, kwargs))
182189
call_key = (dest, service)
183190
# TODO: consider it as a future extension, as a replacement for

0 commit comments

Comments
 (0)