[PATCH] qemu: Fix crash in virQEMUCapsProbeQMPTPM
Erik Skultety
eskultet at redhat.com
Mon Jul 12 14:34:47 UTC 2021
On Mon, Jul 12, 2021 at 04:25:59PM +0200, Peter Krempa wrote:
> If the queried QMP command doesn't exist qemuMonitorGetTPMModels returns
> 0 but sets the string list to NULL which isn't accepted by
> g_strv_contains.
>
> Fixes: a5bc5f0ecf8
> Reported-by: Olaf Hering <olaf at aepfle.de>
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
> src/qemu/qemu_capabilities.c | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index d1cd8f11ac..5b359258a1 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -3168,6 +3168,9 @@ virQEMUCapsProbeQMPTPM(virQEMUCaps *qemuCaps,
> if (qemuMonitorGetTPMModels(mon, &models) < 0)
> return -1;
>
> + if (!models)
> + return 0;
> +
> for (i = 0; i < G_N_ELEMENTS(virQEMUCapsTPMModelsToCaps); i++) {
> const char *needle = virDomainTPMModelTypeToString(virQEMUCapsTPMModelsToCaps[i].type);
> if (g_strv_contains((const char **)models, needle))
> @@ -3177,10 +3180,12 @@ virQEMUCapsProbeQMPTPM(virQEMUCaps *qemuCaps,
> if (qemuMonitorGetTPMTypes(mon, &types) < 0)
> return -1;
>
> - for (i = 0; i < G_N_ELEMENTS(virQEMUCapsTPMTypesToCaps); i++) {
> - const char *needle = virDomainTPMBackendTypeToString(virQEMUCapsTPMTypesToCaps[i].type);
> - if (g_strv_contains((const char **)types, needle))
> - virQEMUCapsSet(qemuCaps, virQEMUCapsTPMTypesToCaps[i].caps);
> + if (types) {
> + for (i = 0; i < G_N_ELEMENTS(virQEMUCapsTPMTypesToCaps); i++) {
> + const char *needle = virDomainTPMBackendTypeToString(virQEMUCapsTPMTypesToCaps[i].type);
> + if (g_strv_contains((const char **)types, needle))
> + virQEMUCapsSet(qemuCaps, virQEMUCapsTPMTypesToCaps[i].caps);
> + }
Why not:
if (!types)
return 0;
to remain consistent with the essentially same fix in the first hunk? :)
Reviewed-by: Erik Skultety <eskultet at redhat>
> }
>
> return 0;
> --
> 2.31.1
>
More information about the libvir-list
mailing list