Markus Armbruster <arm...@redhat.com> writes:

> Marc-André Lureau <marcandre.lur...@redhat.com> writes:
>
>> Calling:
>>
>> { "execute": "qom-set",
>>   "arguments": { "path": "/machine", "property": "rtc-time" } }
>>
>> Will crash with:
>>
>> qapi/qapi-visit-core.c:277: visit_type_any: Assertion `!err != !*obj'
>> failed
>
> This is actually a recent regression.  Let's add "Broken in commit
> 5c678ee."  Can do on commit.
>
>> Clear the obj and return an error.
>>
>> The patch also fixes a similar potential crash in qmp_input_type_null()
>> by checking qmp_input_get_object() returned a valid qobj.
>>
>> Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
>> Reviewed-by: Eric Blake <ebl...@redhat.com>

I'd like to rephrase like this, if it's all right with you:

    qapi: Fix crash when 'any' or 'null' parameter is missing

    Unlike the other visit methods, visit_type_any() and visit_type_null()
    neglect to check whether qmp_input_get_object() succeeded.  They crash
    when it fails.  Reproducer:

    { "execute": "qom-set",
      "arguments": { "path": "/machine", "property": "rtc-time" } }

    Will crash with:

    qapi/qapi-visit-core.c:277: visit_type_any: Assertion `!err != !*obj'
    failed

    Broken in commit 5c678ee.  Fix by adding the missing error checks.

Also:
Reviewed-by: Markus Armbruster <arm...@redhat.com>

Reply via email to