mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
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:
1 parent
4070583090
commit
7581a378b0
1 file changed
+4
-1
@@ -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 )
|
||||
|
||||