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