From: John Ferlan Date: Wed, 27 Aug 2014 18:42:41 +0000 (-0400) Subject: qemu_agent: Resolve Coverity RESOURCE_LEAK X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=6f8a4f6d65072ec69473895de1a69026aeb4f03e;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git qemu_agent: Resolve Coverity RESOURCE_LEAK Coverity found that on error paths, the 'arg' value wasn't be cleaned up. Followed the example in qemuAgentSetVCPUs() where upon successful call to qemuAgentCommand() the 'cpus' is set to NULL; otherwise, when cleanup occurs the free the memory for 'arg' --- diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c index a10954ae5..fe38f6df9 100644 --- a/src/qemu/qemu_agent.c +++ b/src/qemu/qemu_agent.c @@ -1328,7 +1328,7 @@ int qemuAgentFSFreeze(qemuAgentPtr mon, const char **mountpoints, unsigned int nmountpoints) { int ret = -1; - virJSONValuePtr cmd, arg; + virJSONValuePtr cmd, arg = NULL; virJSONValuePtr reply = NULL; if (mountpoints && nmountpoints) { @@ -1343,7 +1343,8 @@ int qemuAgentFSFreeze(qemuAgentPtr mon, const char **mountpoints, } if (!cmd) - return -1; + goto cleanup; + arg = NULL; if (qemuAgentCommand(mon, cmd, &reply, true, VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK) < 0) @@ -1355,6 +1356,7 @@ int qemuAgentFSFreeze(qemuAgentPtr mon, const char **mountpoints, } cleanup: + virJSONValueFree(arg); virJSONValueFree(cmd); virJSONValueFree(reply); return ret;