From: Daniel P. Berrangé Date: Mon, 9 Aug 2021 13:10:29 +0000 (+0100) Subject: qga: fix leak of base64 decoded data on command error X-Git-Tag: v6.1.0-rc3~3^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=057489dd1586612b99b4b98d211bf7f0a9d6f0e4;p=thirdparty%2Fqemu.git qga: fix leak of base64 decoded data on command error If the guest command fails to be spawned, then we would leak the decoded base64 input used for the command's stdin feed. Signed-off-by: Daniel P. Berrangé Reviewed-by: Marc-André Lureau Signed-off-by: Michael Roth --- diff --git a/qga/commands.c b/qga/commands.c index a6491d2cf8f..80501e4a737 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -402,7 +402,7 @@ GuestExec *qmp_guest_exec(const char *path, GIOChannel *in_ch, *out_ch, *err_ch; GSpawnFlags flags; bool has_output = (has_capture_output && capture_output); - uint8_t *input = NULL; + g_autofree uint8_t *input = NULL; size_t ninput = 0; arglist.value = (char *)path; @@ -441,7 +441,7 @@ GuestExec *qmp_guest_exec(const char *path, g_child_watch_add(pid, guest_exec_child_watch, gei); if (has_input_data) { - gei->in.data = input; + gei->in.data = g_steal_pointer(&input); gei->in.size = ninput; #ifdef G_OS_WIN32 in_ch = g_io_channel_win32_new_fd(in_fd);