mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: remove use of qemuDomainObjBeginJobWithAgent()
This function will be removed in a future commit because it allows the caller to acquire both monitor and agent jobs at the same time. Holding both job types creates a vulnerability to denial of service from a malicious guest agent. qemuDomainSetVcpusFlags() always passes NONE for either the monitor job or the agent job (and thus is not vulnerable to the DoS), so we can simply replace this function with the functions for acquiring the appropriate type of job. Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
e005c95f56
commit
ffa5066a49
@ -5039,8 +5039,6 @@ qemuDomainSetVcpusFlags(virDomainPtr dom,
|
||||
virDomainDefPtr persistentDef;
|
||||
bool hotpluggable = !!(flags & VIR_DOMAIN_VCPU_HOTPLUGGABLE);
|
||||
bool useAgent = !!(flags & VIR_DOMAIN_VCPU_GUEST);
|
||||
qemuDomainJob job = QEMU_JOB_NONE;
|
||||
qemuDomainAgentJob agentJob = QEMU_AGENT_JOB_NONE;
|
||||
int ret = -1;
|
||||
|
||||
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
|
||||
@ -5055,13 +5053,14 @@ qemuDomainSetVcpusFlags(virDomainPtr dom,
|
||||
if (virDomainSetVcpusFlagsEnsureACL(dom->conn, vm->def, flags) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (useAgent)
|
||||
agentJob = QEMU_AGENT_JOB_MODIFY;
|
||||
else
|
||||
job = QEMU_JOB_MODIFY;
|
||||
|
||||
if (qemuDomainObjBeginJobWithAgent(driver, vm, job, agentJob) < 0)
|
||||
goto cleanup;
|
||||
if (useAgent) {
|
||||
if (qemuDomainObjBeginAgentJob(driver, vm, QEMU_AGENT_JOB_MODIFY) < 0)
|
||||
goto cleanup;
|
||||
} else {
|
||||
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0)
|
||||
goto endjob;
|
||||
@ -5075,7 +5074,7 @@ qemuDomainSetVcpusFlags(virDomainPtr dom,
|
||||
nvcpus, hotpluggable);
|
||||
|
||||
endjob:
|
||||
if (agentJob)
|
||||
if (useAgent)
|
||||
qemuDomainObjEndAgentJob(vm);
|
||||
else
|
||||
qemuDomainObjEndJob(driver, vm);
|
||||
|
Loading…
x
Reference in New Issue
Block a user