]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuDomainDefPostParse: Fail if unable to fill machine type
authorMichal Privoznik <mprivozn@redhat.com>
Thu, 16 Apr 2020 12:18:28 +0000 (14:18 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 16 Apr 2020 14:14:05 +0000 (16:14 +0200)
Previously, we used virCapabilitiesDomainDataLookup() to fill
machine type in post parse callback if none was provided in the
domain XML. If machine type couldn't be filled in an error was
reported. After 4a4132b4625 we've changed it to
virQEMUCapsGetPreferredMachine() which returns NULL, but we no
longer report an error and proceed with the post parse callbacks
processing. This may lead to a crash because the code later on
assumes def->os.machine is not NULL.

Fixes: 4a4132b4625
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Mores <pmores@redhat.com>
src/qemu/qemu_domain.c

index 91e234d64448fbe3fde6f0798cac66c69b82d9ec..98ffd23a71b222f6e740207910533b6e1c1f3ffd 100644 (file)
@@ -4973,6 +4973,14 @@ qemuDomainDefPostParse(virDomainDefPtr def,
     if (!def->os.machine) {
         const char *machine = virQEMUCapsGetPreferredMachine(qemuCaps,
                                                              def->virtType);
+        if (!machine) {
+            virReportError(VIR_ERR_INVALID_ARG,
+                           _("could not get preferred machine for %s type=%s"),
+                           def->emulator,
+                           virDomainVirtTypeToString(def->virtType));
+            return -1;
+        }
+
         def->os.machine = g_strdup(machine);
     }