mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
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]
This commit is contained in:
parent
6f2ab6090d
commit
e2050ef633
5 changed files with 20 additions and 9 deletions
|
@ -164,6 +164,7 @@ schemas = [
|
|||
'struct-base-clash-deep.json',
|
||||
'struct-base-clash.json',
|
||||
'struct-data-invalid.json',
|
||||
'struct-data-typename.json',
|
||||
'struct-member-if-invalid.json',
|
||||
'struct-member-invalid-dict.json',
|
||||
'struct-member-invalid.json',
|
||||
|
|
2
tests/qapi-schema/struct-data-typename.err
Normal file
2
tests/qapi-schema/struct-data-typename.err
Normal file
|
@ -0,0 +1,2 @@
|
|||
struct-data-typename.json: In struct 'Stru2':
|
||||
struct-data-typename.json:2: 'data' should be an object or type name
|
2
tests/qapi-schema/struct-data-typename.json
Normal file
2
tests/qapi-schema/struct-data-typename.json
Normal file
|
@ -0,0 +1,2 @@
|
|||
{ 'struct': 'Stru1', 'data': {} }
|
||||
{ 'struct': 'Stru2', 'data': 'Stru1' }
|
0
tests/qapi-schema/struct-data-typename.out
Normal file
0
tests/qapi-schema/struct-data-typename.out
Normal file
Loading…
Add table
Add a link
Reference in a new issue