]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Fix crash in virQEMUCapsProbeQMPTPM
authorPeter Krempa <pkrempa@redhat.com>
Mon, 12 Jul 2021 12:55:42 +0000 (14:55 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 19 Jul 2021 09:33:46 +0000 (11:33 +0200)
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@aepfle.de>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
src/qemu/qemu_capabilities.c

index e0c3a0756866bf0fdb37f840f42ffc3719f9d022..73ee1e48173f55481801aa79faa2472ddb7feca0 100644 (file)
@@ -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))