From f16f14b020a665e2854ba74122e2ae286c506129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Tue, 4 Aug 2020 21:59:13 +0200 Subject: [PATCH] utils: fix encoding '+' for qubes.VMExec '+' in an argument needs to be encoded too, otherwise it is interpreted as arguments separator. --- qubesadmin/tests/utils.py | 4 ++-- qubesadmin/utils.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/qubesadmin/tests/utils.py b/qubesadmin/tests/utils.py index 83a6fe9..59aa243 100644 --- a/qubesadmin/tests/utils.py +++ b/qubesadmin/tests/utils.py @@ -116,8 +116,8 @@ class TestVMUsage(qubesadmin.tests.QubesTestCase): class TestVMExecEncode(qubesadmin.tests.QubesTestCase): def test_00_encode(self): self.assertEqual( - qubesadmin.utils.encode_for_vmexec(['ls', '-a']), - 'ls+--a') + qubesadmin.utils.encode_for_vmexec(['ls', '-a', '+x']), + 'ls+--a+-2Bx') self.assertEqual( qubesadmin.utils.encode_for_vmexec( ['touch', '/home/user/.profile']), diff --git a/qubesadmin/utils.py b/qubesadmin/utils.py index 2350f46..e2fab5d 100644 --- a/qubesadmin/utils.py +++ b/qubesadmin/utils.py @@ -161,6 +161,6 @@ def encode_for_vmexec(args): parts = [] for arg in args: - part = re.sub(br'[^a-zA-Z0-9_.+]', encode, arg.encode('utf-8')) + part = re.sub(br'[^a-zA-Z0-9_.]', encode, arg.encode('utf-8')) parts.append(part) return b'+'.join(parts).decode('ascii')