qapi: Fix to reject 'data': 'mumble' in struct
commite2050ef633f77781e6b7b3aa04dd736e0ad825e1
authorMarkus Armbruster <armbru@redhat.com>
Thu, 16 Mar 2023 07:13:19 +0000 (16 08:13 +0100)
committerMarkus Armbruster <armbru@redhat.com>
Mon, 24 Apr 2023 13:21:39 +0000 (24 15:21 +0200)
tree8867094aebe71b5d82da40c4c22cf2d2860ad60b
parent6f2ab6090de993988f7345e449852821ffc75f4e
qapi: Fix to reject 'data': 'mumble' in struct

A struct's 'data' must be a JSON object defining the struct's members.
The QAPI code generator incorrectly accepts a JSON string instead, and
then crashes in QAPISchema._make_members() called from
._def_struct_type().

Fix to reject it: factor check_type_implicit() out of
check_type_name_or_implicit(), and switch check_struct() to use it
instead.  Also add a test case.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20230316071325.492471-9-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
[More detailed commit message]
scripts/qapi/expr.py
tests/qapi-schema/meson.build
tests/qapi-schema/struct-data-typename.err [new file with mode: 0644]
tests/qapi-schema/struct-data-typename.json [new file with mode: 0644]
tests/qapi-schema/struct-data-typename.out [new file with mode: 0644]