]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Fix job usage in qemuDomainBlockJobImpl
authorJiri Denemark <jdenemar@redhat.com>
Fri, 20 Dec 2013 14:04:09 +0000 (15:04 +0100)
committerEric Blake <eblake@redhat.com>
Wed, 15 Jan 2014 19:27:23 +0000 (12:27 -0700)
CVE-2013-6458

Every API that is going to begin a job should do that before fetching
data from vm->def.

(cherry picked from commit f93d2caa070f6197ab50d372d286018b0ba6bbd8)

Conflicts:
src/qemu/qemu_driver.c - older style BeginJobWithDriver, context

src/qemu/qemu_driver.c

index 25ceee061ee56d0cfa0d64e27bcb22726c5c0b84..ac728fcab8d99b501e9a7144fa6e6fee515d27c0 100644 (file)
@@ -12619,11 +12619,6 @@ qemuDomainBlockJobImpl(virDomainPtr dom, const char *path, const char *base,
         goto cleanup;
     }
 
-    device = qemuDiskPathToAlias(vm, path, &idx);
-    if (!device)
-        goto cleanup;
-    disk = vm->def->disks[idx];
-
     if (qemuDomainObjBeginJobWithDriver(driver, vm, QEMU_JOB_MODIFY) < 0)
         goto cleanup;
 
@@ -12633,6 +12628,11 @@ qemuDomainBlockJobImpl(virDomainPtr dom, const char *path, const char *base,
         goto endjob;
     }
 
+    device = qemuDiskPathToAlias(vm, path, &idx);
+    if (!device)
+        goto endjob;
+    disk = vm->def->disks[idx];
+
     qemuDomainObjEnterMonitorWithDriver(driver, vm);
     /* XXX - libvirt should really be tracking the backing file chain
      * itself, and validating that base is on the chain, rather than