On 12/3/18 10:30 AM, Max Reitz wrote:
Hi,

QMP accepts double keys in dicts without complaining.  The value it is
using is apparently the last one specified:

JSON says it is undefined what happens when a client passes double keys. We are probably best off if we teach our parser to be strict and reject doubled keys in QMP as invalid.

Hmm - can a client abuse QMP with duplicate keys to cause qemu to leak memory?


$ qemu-system-x86_64 -qmp stdio
{"QMP": {"version": {"qemu": {"micro": 93, "minor": 0, "major": 3},
"package": "v3.1.0-rc3-7-g87a45d86ed"}, "capabilities": []}}
{'execute':'qmp_capabilities'}
{"return": {}}
{'execute':'blockdev-add','arguments':{'driver':'null-co',
  'node-name':'foo','node-name':'bar'}}
{"return": {}}
{'execute':'query-named-block-nodes'}
{"return": [{ [...] "node-name": "bar" [...] }]}

Another test case is iotest 229 which specifies both mode=absolute-paths
and mode=existing (it wants the latter).

Max


--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Reply via email to