summaryrefslogtreecommitdiff
path: root/qapi
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2021-03-18 16:55:19 +0100
committerMarkus Armbruster <armbru@redhat.com>2021-03-19 16:05:11 +0100
commitdbb675c19aa6ca328f4449ccd1ff605f9cb744e9 (patch)
tree46076cd3efbda133cb6325b00ded0dd603260e88 /qapi
parentdb29164103e53ae7c112086127e3d1c92b1d4d89 (diff)
downloadqemu-dbb675c19aa6ca328f4449ccd1ff605f9cb744e9.zip
qapi: New -compat deprecated-input=crash
Policy "crash" calls abort() when deprecated input is received. Bugs in integration tests may mask the error from policy "reject". Provide a larger hammer: crash outright. Masking that seems unlikely. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20210318155519.1224118-12-armbru@redhat.com>
Diffstat (limited to 'qapi')
-rw-r--r--qapi/compat.json3
-rw-r--r--qapi/qmp-dispatch.c1
-rw-r--r--qapi/qobject-input-visitor.c1
3 files changed, 4 insertions, 1 deletions
diff --git a/qapi/compat.json b/qapi/compat.json
index fc24a58a9e..ae3afc22df 100644
--- a/qapi/compat.json
+++ b/qapi/compat.json
@@ -11,11 +11,12 @@
#
# @accept: Accept silently
# @reject: Reject with an error
+# @crash: abort() the process
#
# Since: 6.0
##
{ 'enum': 'CompatPolicyInput',
- 'data': [ 'accept', 'reject' ] }
+ 'data': [ 'accept', 'reject', 'crash' ] }
##
# @CompatPolicyOutput:
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
index 797df33be4..59600210ce 100644
--- a/qapi/qmp-dispatch.c
+++ b/qapi/qmp-dispatch.c
@@ -185,6 +185,7 @@ QDict *qmp_dispatch(const QmpCommandList *cmds, QObject *request,
"Deprecated command %s disabled by policy",
command);
goto out;
+ case COMPAT_POLICY_INPUT_CRASH:
default:
abort();
}
diff --git a/qapi/qobject-input-visitor.c b/qapi/qobject-input-visitor.c
index bd94cf187a..04b790412e 100644
--- a/qapi/qobject-input-visitor.c
+++ b/qapi/qobject-input-visitor.c
@@ -676,6 +676,7 @@ static bool qobject_input_deprecated_accept(Visitor *v, const char *name,
error_setg(errp, "Deprecated parameter '%s' disabled by policy",
name);
return false;
+ case COMPAT_POLICY_INPUT_CRASH:
default:
abort();
}