* [PULL 0/1] QAPI patches patches for 2021-07-15
@ 2021-07-15 12:32 Markus Armbruster
2021-07-15 12:32 ` [PULL 1/1] qapi: Fix crash on missing enum member name Markus Armbruster
2021-07-16 12:01 ` [PULL 0/1] QAPI patches patches for 2021-07-15 Peter Maydell
0 siblings, 2 replies; 3+ messages in thread
From: Markus Armbruster @ 2021-07-15 12:32 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell
The following changes since commit a9649a719a44894b81f38dc1c5c1888ee684acef:
Merge remote-tracking branch 'remotes/cleber-gitlab/tags/python-next-pull-request' into staging (2021-07-14 18:09:09 +0100)
are available in the Git repository at:
git://repo.or.cz/qemu/armbru.git tags/pull-qapi-2021-07-15
for you to fetch changes up to a0c7b99bf75d85b616fa219a7d866fc72970f327:
qapi: Fix crash on missing enum member name (2021-07-15 12:56:41 +0200)
----------------------------------------------------------------
QAPI patches patches for 2021-07-15
----------------------------------------------------------------
Markus Armbruster (1):
qapi: Fix crash on missing enum member name
scripts/qapi/expr.py | 2 +-
tests/qapi-schema/enum-dict-no-name.err | 2 ++
tests/qapi-schema/enum-dict-no-name.json | 2 ++
tests/qapi-schema/enum-dict-no-name.out | 0
4 files changed, 5 insertions(+), 1 deletion(-)
create mode 100644 tests/qapi-schema/enum-dict-no-name.err
create mode 100644 tests/qapi-schema/enum-dict-no-name.json
create mode 100644 tests/qapi-schema/enum-dict-no-name.out
--
2.31.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PULL 1/1] qapi: Fix crash on missing enum member name
2021-07-15 12:32 [PULL 0/1] QAPI patches patches for 2021-07-15 Markus Armbruster
@ 2021-07-15 12:32 ` Markus Armbruster
2021-07-16 12:01 ` [PULL 0/1] QAPI patches patches for 2021-07-15 Peter Maydell
1 sibling, 0 replies; 3+ messages in thread
From: Markus Armbruster @ 2021-07-15 12:32 UTC (permalink / raw)
To: qemu-devel; +Cc: John Snow, peter.maydell, Eric Blake
New test case enum-dict-no-name.json crashes:
$ python3 scripts/qapi-gen.py tests/qapi-schema/enum-dict-no-name.json
Traceback (most recent call last):
[...]
File "/work/armbru/qemu/scripts/qapi/expr.py", line 458, in check_enum
member_name = member['name']
KeyError: 'name'
Root cause: we try to retrieve member 'name' before we check for
missing members. With that fixed, we get the expected error "'data'
member misses key 'name'".
Fixes: 0825f62c842f2c07c5471391c6d7fd3f4fe83732
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <20210616072121.626431-1-armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
---
scripts/qapi/expr.py | 2 +-
tests/qapi-schema/enum-dict-no-name.err | 2 ++
tests/qapi-schema/enum-dict-no-name.json | 2 ++
tests/qapi-schema/enum-dict-no-name.out | 0
4 files changed, 5 insertions(+), 1 deletion(-)
create mode 100644 tests/qapi-schema/enum-dict-no-name.err
create mode 100644 tests/qapi-schema/enum-dict-no-name.json
create mode 100644 tests/qapi-schema/enum-dict-no-name.out
diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
index 496f7e0333..cf98923fa6 100644
--- a/scripts/qapi/expr.py
+++ b/scripts/qapi/expr.py
@@ -455,8 +455,8 @@ def check_enum(expr: _JSONObject, info: QAPISourceInfo) -> None:
for m in members]
for member in members:
source = "'data' member"
- member_name = member['name']
check_keys(member, info, source, ['name'], ['if'])
+ member_name = member['name']
check_name_is_str(member_name, info, source)
source = "%s '%s'" % (source, member_name)
# Enum members may start with a digit
diff --git a/tests/qapi-schema/enum-dict-no-name.err b/tests/qapi-schema/enum-dict-no-name.err
new file mode 100644
index 0000000000..3ce0c16987
--- /dev/null
+++ b/tests/qapi-schema/enum-dict-no-name.err
@@ -0,0 +1,2 @@
+enum-dict-no-name.json: In enum 'Enum':
+enum-dict-no-name.json:2: 'data' member misses key 'name'
diff --git a/tests/qapi-schema/enum-dict-no-name.json b/tests/qapi-schema/enum-dict-no-name.json
new file mode 100644
index 0000000000..5952a8662e
--- /dev/null
+++ b/tests/qapi-schema/enum-dict-no-name.json
@@ -0,0 +1,2 @@
+# enum member lacking a name
+{ 'enum': 'Enum', 'data': [ {} ] }
diff --git a/tests/qapi-schema/enum-dict-no-name.out b/tests/qapi-schema/enum-dict-no-name.out
new file mode 100644
index 0000000000..e69de29bb2
--
2.31.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PULL 0/1] QAPI patches patches for 2021-07-15
2021-07-15 12:32 [PULL 0/1] QAPI patches patches for 2021-07-15 Markus Armbruster
2021-07-15 12:32 ` [PULL 1/1] qapi: Fix crash on missing enum member name Markus Armbruster
@ 2021-07-16 12:01 ` Peter Maydell
1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2021-07-16 12:01 UTC (permalink / raw)
To: Markus Armbruster; +Cc: QEMU Developers
On Thu, 15 Jul 2021 at 13:32, Markus Armbruster <armbru@redhat.com> wrote:
>
> The following changes since commit a9649a719a44894b81f38dc1c5c1888ee684acef:
>
> Merge remote-tracking branch 'remotes/cleber-gitlab/tags/python-next-pull-request' into staging (2021-07-14 18:09:09 +0100)
>
> are available in the Git repository at:
>
> git://repo.or.cz/qemu/armbru.git tags/pull-qapi-2021-07-15
>
> for you to fetch changes up to a0c7b99bf75d85b616fa219a7d866fc72970f327:
>
> qapi: Fix crash on missing enum member name (2021-07-15 12:56:41 +0200)
>
> ----------------------------------------------------------------
> QAPI patches patches for 2021-07-15
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/6.1
for any user-visible changes.
-- PMM
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-07-16 12:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-15 12:32 [PULL 0/1] QAPI patches patches for 2021-07-15 Markus Armbruster
2021-07-15 12:32 ` [PULL 1/1] qapi: Fix crash on missing enum member name Markus Armbruster
2021-07-16 12:01 ` [PULL 0/1] QAPI patches patches for 2021-07-15 Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.