提交 72953074 编写于 作者: Y Yudai Yamagish 提交者: Jiri Denemark

Fix segmentation fault when accessing default qemu machine type

This patch fixes a segmentation fault when creating new virtual machines using QEMU.
The segmentation fault is caused by commit f4183068
and commit cbb6ec42.

In virQEMUCapsProbeQMPMachineTypes, when copying machines to qemuCaps, "none" is skipped.
Therefore, the value of i and "qemuCaps->nmachineTypes - 1" do not always match.
However, defIdx value (used to call virQEMUCapsSetDefaultMachine) is set using the value in i
when the array elements are in qemuCaps->nmachineTypes - 1.
So, when libvirt tries to create virtual machines using the default machine type,
qemuCaps->machineTypes[defIdx] is accessed and since the defIdx is NULL, it results in segmentation fault.
Signed-off-by: NYudai Yamagishi <yummy@sfc.wide.ad.jp>
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
上级 968fe2c8
......@@ -2151,7 +2151,7 @@ virQEMUCapsProbeQMPMachineTypes(virQEMUCapsPtr qemuCaps,
machines[i]->name) < 0)
goto cleanup;
if (machines[i]->isDefault)
defIdx = i;
defIdx = qemuCaps->nmachineTypes - 1;
qemuCaps->machineMaxCpus[qemuCaps->nmachineTypes - 1] =
machines[i]->maxCpus;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册