From: Anthony PERARD Date: Mon, 13 Dec 2010 17:59:02 +0000 (+0000) Subject: libxl: strdup disk path before put it in qemu args array. X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=5b4d52decb7ca0758ae0e79b67548dd6adbbf2f0;p=xen.git libxl: strdup disk path before put it in qemu args array. In libxl_build_device_model_args_new, the path to the disk image are freeed before there was actually use to make the arguments list of Qemu. The patch strdups it. This patch also changes argv[0] of the device model. Now, it is the conventional argv[0], so is value come from info->device_model. Signed-off-by: Anthony PERARD Signed-off-by: Stefano Stabellini committer: Stefano Stabellini --- tools/libxl/libxl.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) --- diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 8fdfd45345..16343b5426 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1256,9 +1256,9 @@ static char ** libxl_build_device_model_args_new(libxl__gc *gc, if (!dm_args) return NULL; - flexarray_set(dm_args, num++, "qemu-system-xen"); - flexarray_set(dm_args, num++, "-xen-domid"); + flexarray_set(dm_args, num++, libxl__strdup(gc, info->device_model)); + flexarray_set(dm_args, num++, "-xen-domid"); flexarray_set(dm_args, num++, libxl__sprintf(gc, "%d", info->domid)); if (info->dom_name) { @@ -1378,10 +1378,10 @@ static char ** libxl_build_device_model_args_new(libxl__gc *gc, for (i; i < nb; i++) { if ( disks[i].is_cdrom ) { flexarray_set(dm_args, num++, "-cdrom"); - flexarray_set(dm_args, num++, disks[i].physpath); - }else{ + flexarray_set(dm_args, num++, libxl__strdup(gc, disks[i].physpath)); + } else { flexarray_set(dm_args, num++, libxl__sprintf(gc, "-%s", disks[i].virtpath)); - flexarray_set(dm_args, num++, disks[i].physpath); + flexarray_set(dm_args, num++, libxl__strdup(gc, disks[i].physpath)); } libxl_device_disk_destroy(&disks[i]); }