tools/libxc: Fix missing va_end() in do_dm_op() error path

The fail3 error path skips the va_end() call, which typically leaks memory for
64bit x86 code.

Introduced by c/s 524a98c2ac, spotted by Coverity.

Coverity-ID: 1399608
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
This commit is contained in:
Andrew Cooper committed 2017-01-30 11:07:48 +00:00
1 parent 4070583090
commit 7581a378b0
1 file changed
+4 -1
+4 -1
View File
@@ -803,7 +803,7 @@ int do_dm_op(xc_interface *xch, domid_t domid, unsigned int nr_bufs, ...)
bounce[idx].h = xencall_alloc_buffer(xch->xcall, size);
if ( bounce[idx].h == NULL )
goto fail3;
break; /* Error path handled after va_end(). */
memcpy(bounce[idx].h, u, size);
bounce[idx].u = u;
@@ -813,6 +813,9 @@ int do_dm_op(xc_interface *xch, domid_t domid, unsigned int nr_bufs, ...)
}
va_end(args);
if ( idx != nr_bufs )
goto fail3;
ret = xencall3(xch->xcall, __HYPERVISOR_dm_op,
domid, nr_bufs, HYPERCALL_BUFFER_AS_ARG(bufs));
if ( ret < 0 )
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.