[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 11/13] qapi: Assert non-input visitors see only valid alternate t
From: |
Markus Armbruster |
Subject: |
[PATCH 11/13] qapi: Assert non-input visitors see only valid alternate tags |
Date: |
Thu, 23 Apr 2020 18:00:34 +0200 |
An alternate type's visit_type_FOO() fails when it runs into an
invalid ->type.
This is appropriate with an input visitor: visit_start_alternate()
sets ->type according to the input, and bad input can lead to bad
->type.
It should never happen with an output, clone or dealloc visitor: if it
did, the alternate being output, cloned or deallocated would be messed
up beyond repair. Assert that.
Signed-off-by: Markus Armbruster <address@hidden>
---
scripts/qapi/visit.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/scripts/qapi/visit.py b/scripts/qapi/visit.py
index 3b28ba93f3..99b73eb7c1 100644
--- a/scripts/qapi/visit.py
+++ b/scripts/qapi/visit.py
@@ -232,6 +232,7 @@ void visit_type_%(c_name)s(Visitor *v, const char *name,
%(c_name)s **obj, Error
case QTYPE_NONE:
abort();
default:
+ assert(visit_is_input(v));
error_setg(&err, QERR_INVALID_PARAMETER_TYPE, name ? name : "null",
"%(name)s");
}
--
2.21.1
- Re: [PATCH 10/13] qapi: Clean up visitor's recovery from input with invalid type, (continued)
- [PATCH 04/13] qapi: Document @errp usage more thoroughly in visitor.h, Markus Armbruster, 2020/04/23
- [PATCH 03/13] qapi: Fix typo in visit_start_list()'s contract, Markus Armbruster, 2020/04/23
- [PATCH 08/13] qapi: Assert output visitors see only valid enum values, Markus Armbruster, 2020/04/23
- [PATCH 13/13] qom: Simplify object_property_get_enum(), Markus Armbruster, 2020/04/23
- [PATCH 11/13] qapi: Assert non-input visitors see only valid alternate tags,
Markus Armbruster <=
- [PATCH 05/13] qapi: Polish prose in visitor.h, Markus Armbruster, 2020/04/23
- [PATCH 12/13] qapi: Only input visitors can actually fail, Markus Armbruster, 2020/04/23
- [PATCH 09/13] qapi: Assert non-input visitors see only valid narrow integers, Markus Armbruster, 2020/04/23
- [PATCH 02/13] qapi: Fix the virtual walk example in visitor.h's big comment, Markus Armbruster, 2020/04/23
- [PATCH 07/13] qapi: Fix Visitor contract for start_alternate(), Markus Armbruster, 2020/04/23