On Thu, Apr 16, 2020 at 02:33:33PM +0200, Michal Privoznik wrote: > 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@xxxxxxxxxx> > --- > src/qemu/qemu_domain.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > 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); > } > > -- > 2.25.3 > Reviewed-by: Pavel Mores <pmores@xxxxxxxxxx>