From 58ff51da10eff7090ff2a63436c558b1eb5150c3 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sat, 12 May 2018 14:02:20 +1200 Subject: [PATCH] command: handle string without terminal escaped char Fixes #2810 --- mitmproxy/command.py | 5 ++++- test/mitmproxy/test_command.py | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/mitmproxy/command.py b/mitmproxy/command.py index c94e8abb2..27f0921d8 100644 --- a/mitmproxy/command.py +++ b/mitmproxy/command.py @@ -236,7 +236,10 @@ class CommandManager(mitmproxy.types._CommandBase): """ Execute a command string. May raise CommandError. """ - parts = list(lexer(cmdstr)) + try: + parts = list(lexer(cmdstr)) + except ValueError as e: + raise exceptions.CommandError("Command error: %s" % e) if not len(parts) >= 1: raise exceptions.CommandError("Invalid command: %s" % cmdstr) return self.call_strings(parts[0], parts[1:]) diff --git a/test/mitmproxy/test_command.py b/test/mitmproxy/test_command.py index 7c0dc06d9..029dbafd5 100644 --- a/test/mitmproxy/test_command.py +++ b/test/mitmproxy/test_command.py @@ -281,6 +281,8 @@ def test_simple(): c.execute("one.two too many args") with pytest.raises(exceptions.CommandError, match="Unknown"): c.call("nonexistent") + with pytest.raises(exceptions.CommandError, match="No escaped"): + c.execute("\\") c.add("empty", a.empty) c.execute("empty")