This patch includes a few minor changes to QAPI found during a more careful code review (patches 1-5) and the implementation of a strict mode for the QObject input visitor (patches 6-10).
While QMP in general is designed so that it is possible to ignore unknown arguments, in the case of the QMP server it is better to reject them to detect bad clients. In fact, we're already doing this at the top level in the argument checker. Strict modes checks for unvisited keys and raises an error if it finds one, so that this checking extends to complex structures. Please review. Paolo Bonzini (10): qapi: add a test case for type errors qapi: fail hard on stack imbalance qapi: fix memory leak on error qapi: shortcut visits on errors qapi: allow freeing partially-allocated objects qapi: simplify qmp_input_next_list qapi: place outermost object on qiv stack qapi: add strict mode to input visitor qmp: add and use q type specifier qmp: parse commands in strict mode monitor.c | 3 + qapi/qmp-input-visitor.c | 113 ++++++++++++++-------- qapi/qmp-input-visitor.h | 2 + qmp-commands.hx | 4 +- scripts/qapi-commands.py | 2 +- scripts/qapi-visit.py | 16 +++ test-qmp-input-strict.c | 234 ++++++++++++++++++++++++++++++++++++++++++++++ test-qmp-input-visitor.c | 19 ++++ tests/Makefile | 5 +- 9 files changed, 354 insertions(+), 44 deletions(-) create mode 100644 test-qmp-input-strict.c -- 1.7.9.1