qga: centralize logic for disabling/enabling commands
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 12 Jul 2024 13:24:59 +0000 (14:24 +0100)
committerKonstantin Kostiuk <kkostiuk@redhat.com>
Fri, 19 Jul 2024 08:50:35 +0000 (11:50 +0300)
commit2e3b166c41e20eba7e74d9a9203a663cc455bc49
treeb5903be9530438c56b1c740c22b4b1f5e5969148
parentf8bf2347ed6036adf195202fa55c2cb587004679
qga: centralize logic for disabling/enabling commands

It is confusing having many different pieces of code enabling and
disabling commands, and it is not clear that they all have the same
semantics, especially wrt prioritization of the block/allow lists.
The code attempted to prevent the user from setting both the block
and allow lists concurrently, however, the logic was flawed as it
checked settings in the configuration file  separately from the
command line arguments. Thus it was possible to set a block list
in the config file and an allow list via a command line argument.
The --dump-conf option also creates a configuration file with both
keys present, even if unset, which means it is creating a config
that cannot actually be loaded again.

Centralizing the code in a single method "ga_apply_command_filters"
will provide a strong guarantee of consistency and clarify the
intended behaviour. With this there is no compelling technical
reason to prevent concurrent setting of both the allow and block
lists, so this flawed restriction is removed.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Konstantin Kostiuk <kkostiuk@redhat.com>
Message-ID: <20240712132459.3974109-23-berrange@redhat.com>
Signed-off-by: Konstantin Kostiuk <kkostiuk@redhat.com>
docs/interop/qemu-ga.rst
qga/commands-posix.c
qga/commands-win32.c
qga/main.c