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>
This commit is contained in:
Markus Armbruster 2021-03-18 16:55:19 +01:00
parent db29164103
commit dbb675c19a
4 changed files with 7 additions and 2 deletions

View File

@ -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:

View File

@ -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();
}

View File

@ -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();
}

View File

@ -3508,7 +3508,7 @@ DEFHEADING()
DEFHEADING(Debug/Expert options:)
DEF("compat", HAS_ARG, QEMU_OPTION_compat,
"-compat [deprecated-input=accept|reject][,deprecated-output=accept|hide]\n"
"-compat [deprecated-input=accept|reject|crash][,deprecated-output=accept|hide]\n"
" Policy for handling deprecated management interfaces\n",
QEMU_ARCH_ALL)
SRST
@ -3519,6 +3519,8 @@ SRST
Accept deprecated commands and arguments
``deprecated-input=reject``
Reject deprecated commands and arguments
``deprecated-input=crash``
Crash on deprecated commands and arguments
``deprecated-output=accept`` (default)
Emit deprecated command results and events
``deprecated-output=hide``