mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 04:25:18 +00:00
qemu: domain: Fix potential NULL deref when parsing job private data
A specially crafted XML which would reference a non-existing disk but request the mirror to be registered with the blockjob could potentially make the parser dereference NULL. Fix it by moving the code slightly and just treat it as a wrong job XML. Found by Coverity. Reported-by: John Ferlan <jferlan@redhat.com> Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
dfd33c1ffb
commit
ed7e342b0a
@ -3012,15 +3012,19 @@ qemuDomainObjPrivateXMLParseBlockjobData(virDomainObjPtr vm,
|
||||
invalidData = true;
|
||||
}
|
||||
|
||||
if (mirror) {
|
||||
if (disk)
|
||||
job->mirrorChain = virObjectRef(disk->mirror);
|
||||
else
|
||||
invalidData = true;
|
||||
}
|
||||
|
||||
job->state = state;
|
||||
job->newstate = newstate;
|
||||
job->errmsg = virXPathString("string(./errmsg)", ctxt);
|
||||
job->invalidData = invalidData;
|
||||
job->disk = disk;
|
||||
|
||||
if (mirror)
|
||||
job->mirrorChain = virObjectRef(job->disk->mirror);
|
||||
|
||||
qemuDomainObjPrivateXMLParseBlockjobDataSpecific(job, ctxt, xmlopt);
|
||||
|
||||
if (qemuBlockJobRegister(job, vm, disk, false) < 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user