From: Michal Privoznik Date: Thu, 16 Apr 2020 12:18:28 +0000 (+0200) Subject: qemuDomainDefPostParse: Fail if unable to fill machine type X-Git-Tag: v6.3.0-rc1~120 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=67b973b510ad68da06e8eb744d97b3e1df5fbcbe;p=thirdparty%2Flibvirt.git qemuDomainDefPostParse: Fail if unable to fill machine type 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 Reviewed-by: Pavel Mores --- diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 91e234d644..98ffd23a71 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -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); }