Skip to content

Commit

Permalink
qapi: New -compat deprecated-input=crash
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Markus Armbruster committed Mar 19, 2021
1 parent 59f0e1a commit 64e9c1e
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 2 deletions.
3 changes: 2 additions & 1 deletion qapi/compat.json
Expand Up @@ -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:
Expand Down
1 change: 1 addition & 0 deletions qapi/qmp-dispatch.c
Expand Up @@ -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();
}
Expand Down
1 change: 1 addition & 0 deletions qapi/qobject-input-visitor.c
Expand Up @@ -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();
}
Expand Down
4 changes: 3 additions & 1 deletion qemu-options.hx
Expand Up @@ -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
Expand All @@ -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``
Expand Down

0 comments on commit 64e9c1e

Please sign in to comment.