From: Ian Campbell Date: Fri, 18 May 2012 12:39:59 +0000 (+0100) Subject: libxl: avoid double free of b_info->u.pv.bootloader X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~8430 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=dd7c460bad640578381132ca491ca5d427b1ebab;p=xen.git libxl: avoid double free of b_info->u.pv.bootloader b_info is a user provided struct and therefore the content must come from malloc and not gc such that libxl_domain_build_info_dispose can free it. This was broken by 25340:373f24c87dee. Signed-off-by: Ian Campbell Acked-by: Ian Jackson Committed-by: Ian Campbell --- diff --git a/tools/libxl/libxl_bootloader.c b/tools/libxl/libxl_bootloader.c index 81e9eab4cc..ca8409cf98 100644 --- a/tools/libxl/libxl_bootloader.c +++ b/tools/libxl/libxl_bootloader.c @@ -356,8 +356,10 @@ void libxl__bootloader_run(libxl__egc *egc, libxl__bootloader_state *bl) if ( lstat(bootloader, &st) ) LOG(DEBUG, "%s doesn't exist, falling back to config path", bootloader); - else - info->u.pv.bootloader = bootloader; + else { + free(info->u.pv.bootloader); + info->u.pv.bootloader = libxl__strdup(NULL, bootloader); + } } make_bootloader_args(gc, bl);