mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 07:05:28 +00:00
qemu: avoid dereferencing a NULL pointer
* src/qemu/qemu_process.c: Taking if (qemuDomainObjEndJob(driver, obj) == 0) true branch then 'obj' is NULL, virDomainObjIsActive(obj) and virDomainObjUnref(obj) will dereference NULL pointer. Signed-off-by: Alex Jia <ajia@redhat.com>
This commit is contained in:
parent
42b23434b0
commit
d93a08eb47
@ -2661,22 +2661,24 @@ error:
|
||||
if (qemuDomainObjEndJob(driver, obj) == 0)
|
||||
obj = NULL;
|
||||
|
||||
if (!virDomainObjIsActive(obj)) {
|
||||
if (virDomainObjUnref(obj) > 0)
|
||||
virDomainObjUnlock(obj);
|
||||
qemuDriverUnlock(driver);
|
||||
return;
|
||||
}
|
||||
if (obj) {
|
||||
if (!virDomainObjIsActive(obj)) {
|
||||
if (virDomainObjUnref(obj) > 0)
|
||||
virDomainObjUnlock(obj);
|
||||
qemuDriverUnlock(driver);
|
||||
return;
|
||||
}
|
||||
|
||||
if (virDomainObjUnref(obj) > 0) {
|
||||
/* We can't get the monitor back, so must kill the VM
|
||||
* to remove danger of it ending up running twice if
|
||||
* user tries to start it again later */
|
||||
qemuProcessStop(driver, obj, 0, VIR_DOMAIN_SHUTOFF_FAILED);
|
||||
if (!obj->persistent)
|
||||
virDomainRemoveInactive(&driver->domains, obj);
|
||||
else
|
||||
virDomainObjUnlock(obj);
|
||||
if (virDomainObjUnref(obj) > 0) {
|
||||
/* We can't get the monitor back, so must kill the VM
|
||||
* to remove danger of it ending up running twice if
|
||||
* user tries to start it again later */
|
||||
qemuProcessStop(driver, obj, 0, VIR_DOMAIN_SHUTOFF_FAILED);
|
||||
if (!obj->persistent)
|
||||
virDomainRemoveInactive(&driver->domains, obj);
|
||||
else
|
||||
virDomainObjUnlock(obj);
|
||||
}
|
||||
}
|
||||
qemuDriverUnlock(driver);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user