Eric Blake <ebl...@redhat.com> writes:

> 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.

Not bug-compatible.  Do we care?

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

No.  parse_pair() inserts with qdict_put_obj(), which replaces the old
value without leaking it.

>>
>> $ 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
>>

Reply via email to