[libvirt] [PATCH 06/19] qemu_agent: Resolve Coverity RESOURCE_LEAK
Wang Rui
moon.wangrui at huawei.com
Thu Aug 28 02:40:21 UTC 2014
On 2014/8/28 4:54, John Ferlan wrote:
> 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'
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
> src/qemu/qemu_agent.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
> index a10954a..fe38f6d 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;
Setting arg to NULL can also lead to memory leak.
It makes virJSONValueFree(arg) below invalid.
>
> 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;
More information about the libvir-list
mailing list