diff --git a/qemu/qapi/qmp-input-visitor.c b/qemu/qapi/qmp-input-visitor.c index c102d0eb..9fa222c4 100644 --- a/qemu/qapi/qmp-input-visitor.c +++ b/qemu/qapi/qmp-input-visitor.c @@ -345,7 +345,13 @@ static void qmp_input_type_any(Visitor *v, const char *name, QObject **obj, static void qmp_input_type_null(Visitor *v, const char *name, Error **errp) { - abort(); + QmpInputVisitor *qiv = to_qiv(v); + QObject *qobj = qmp_input_get_object(qiv, name, true); + + if (qobject_type(qobj) != QTYPE_QNULL) { + error_setg(errp, QERR_INVALID_PARAMETER_TYPE, name ? name : "null", + "null"); + } } static void qmp_input_optional(Visitor *v, const char *name, bool *present) diff --git a/qemu/qapi/qmp-output-visitor.c b/qemu/qapi/qmp-output-visitor.c index d37662cf..93438085 100644 --- a/qemu/qapi/qmp-output-visitor.c +++ b/qemu/qapi/qmp-output-visitor.c @@ -199,7 +199,8 @@ static void qmp_output_type_any(Visitor *v, const char *name, QObject **obj, static void qmp_output_type_null(Visitor *v, const char *name, Error **errp) { - abort(); + QmpOutputVisitor *qov = to_qov(v); + qmp_output_add_obj(qov, name, qnull()); } /* Finish building, and return the root object. Will not be NULL. */