tools/libxl: Fix memory leak in libxl_cpuid_set()

xc_cpuid_set() returns allocated memory via cpuid_res, which libxl needs to
free() seeing as it discards the results.

This is logically a backport of c/s b91825f628 "tools/libxc: Drop
config_transformed parameter from xc_cpuid_set()" but rewritten as one caller
of xc_cpuid_set() does use returned values.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
(cherry picked from commit c54de7d9df)
This commit is contained in:
Andrew Cooper authored and Ian Jackson committed 2020-06-15 15:46:17 +01:00
1 parent d58c48df8c
commit 06760c2bf3
1 file changed
+6 -1
+6 -1
View File
@@ -404,12 +404,17 @@ void libxl_cpuid_apply_policy(libxl_ctx *ctx, uint32_t domid)
void libxl_cpuid_set(libxl_ctx *ctx, uint32_t domid,
libxl_cpuid_policy_list cpuid)
{
int i;
int i, j;
char *cpuid_res[4];
for (i = 0; cpuid[i].input[0] != XEN_CPUID_INPUT_UNUSED; i++)
{
xc_cpuid_set(ctx->xch, domid, cpuid[i].input,
(const char**)(cpuid[i].policy), cpuid_res);
for (j = 0; j < ARRAY_SIZE(cpuid_res); ++j)
free(cpuid_res[j]);
}
}
static const char *input_names[2] = { "leaf", "subleaf" };
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.