On 04/22/2015 10:34 AM, Eric Blake wrote:
On 04/21/2015 08:02 PM, John Snow wrote:
As a convenience for the user, replace any single quotes given
with double quotes so that the data will deserialize correctly
via json.loads().

Signed-off-by: John Snow <js...@redhat.com>
---
  scripts/qmp/qmp-shell | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
index 5347f89..d7cb33d 100755
--- a/scripts/qmp/qmp-shell
+++ b/scripts/qmp/qmp-shell
@@ -129,7 +129,7 @@ class QMPShell(qmp.QEMUMonitorProtocol):

              < command-name > [ arg-name1=arg1 ] ... [ arg-nameN=argN ]
          """
-        cmdargs = cmdline.split()
+        cmdargs = cmdline.replace("'", '"').split()

This replaces ALL single quotes, even if they would otherwise be
escaped.  That is, if I pass foo="a\'\"b", it will probably be corrupted.

qmp-shell exists mainly as a convenience for testing, and I doubt
testers are likely to want to use unbalanced quotes as contents of
strings, so I can give a weak:
Reviewed-by: Eric Blake <ebl...@redhat.com>

But it's still worth thinking about whether there is a more robust
solution to be used.


I done looked it up:

I can probably squash patches 2&3 with a single fix to use the ast.literal_eval() function, which does accept single or double quotes, since it parses python syntax instead of JSON.

I could probably also just have it 'try' each method until it finds something it likes.

--js

Reply via email to