提交 7354aaf4 编写于 作者: J Jiri Denemark 提交者: Eric Blake

qemu: Fix job usage in qemuDomainBlockJobImpl

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 f93d2caa)
上级 0e98442e
...@@ -14036,16 +14036,25 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm, ...@@ -14036,16 +14036,25 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm,
goto cleanup; goto cleanup;
} }
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
_("domain is not running"));
goto endjob;
}
device = qemuDiskPathToAlias(vm, path, &idx); device = qemuDiskPathToAlias(vm, path, &idx);
if (!device) if (!device)
goto cleanup; goto endjob;
disk = vm->def->disks[idx]; disk = vm->def->disks[idx];
if (mode == BLOCK_JOB_PULL && disk->mirror) { if (mode == BLOCK_JOB_PULL && disk->mirror) {
virReportError(VIR_ERR_BLOCK_COPY_ACTIVE, virReportError(VIR_ERR_BLOCK_COPY_ACTIVE,
_("disk '%s' already in active block copy job"), _("disk '%s' already in active block copy job"),
disk->dst); disk->dst);
goto cleanup; goto endjob;
} }
if (mode == BLOCK_JOB_ABORT && if (mode == BLOCK_JOB_ABORT &&
(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT) && (flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT) &&
...@@ -14053,15 +14062,6 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm, ...@@ -14053,15 +14062,6 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm,
virReportError(VIR_ERR_OPERATION_INVALID, virReportError(VIR_ERR_OPERATION_INVALID,
_("pivot of disk '%s' requires an active copy job"), _("pivot of disk '%s' requires an active copy job"),
disk->dst); disk->dst);
goto cleanup;
}
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
_("domain is not running"));
goto endjob; goto endjob;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册