From: Peter Krempa Date: Mon, 12 Jul 2021 12:55:42 +0000 (+0200) Subject: qemu: Fix crash in virQEMUCapsProbeQMPTPM X-Git-Tag: v7.6.0-rc1~160 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7ad645a8efb4dd65574400e2edb8a46fbb7f895;p=thirdparty%2Flibvirt.git qemu: Fix crash in virQEMUCapsProbeQMPTPM 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 Signed-off-by: Peter Krempa Reviewed-by: Erik Skultety --- diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e0c3a07568..73ee1e4817 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,6 +3180,9 @@ virQEMUCapsProbeQMPTPM(virQEMUCaps *qemuCaps, if (qemuMonitorGetTPMTypes(mon, &types) < 0) return -1; + if (!types) + return 0; + for (i = 0; i < G_N_ELEMENTS(virQEMUCapsTPMTypesToCaps); i++) { const char *needle = virDomainTPMBackendTypeToString(virQEMUCapsTPMTypesToCaps[i].type); if (g_strv_contains((const char **)types, needle))