aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxl/libxl_bootloader.c
diff options
context:
space:
mode:
authorZhigang Wang <zhigang.x.wang@oracle.com>2012-02-09 18:41:03 +0000
committerZhigang Wang <zhigang.x.wang@oracle.com>2012-02-09 18:41:03 +0000
commit6f77e95164674e38738bbd55572555d49657c76a (patch)
tree8694a27b536b7e1886bbec8fb143f9a226d7ea34 /tools/libxl/libxl_bootloader.c
parented4779111f938d38ddc935cbef252784f70c482b (diff)
downloadxen-6f77e95164674e38738bbd55572555d49657c76a.tar.gz
xen-6f77e95164674e38738bbd55572555d49657c76a.tar.bz2
xen-6f77e95164674e38738bbd55572555d49657c76a.zip
libxl: fix bootloader args setting
When bootloader_args = ['foo', 'bar'], then info->u.pv.bootloader_args = foo\0 bar\0 \0 Before this patch, 'p++' points to the next character of 'foo\0' and never comes to 'bar\0' (because of the '\0' in 'foo\0'), so the args will be: args[0] = 'oo\0' args[1] = 'o\0' After this patch, 'p++' points to the next string of pv.bootloader_args, so we get the correct args: args[0] = 'foo\0' args[1] = 'bar\0' Signed-off-by: Zhigang Wang <zhigang.x.wang@oracle.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
Diffstat (limited to 'tools/libxl/libxl_bootloader.c')
-rw-r--r--tools/libxl/libxl_bootloader.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/libxl/libxl_bootloader.c b/tools/libxl/libxl_bootloader.c
index 2da1d90f34..907c871f65 100644
--- a/tools/libxl/libxl_bootloader.c
+++ b/tools/libxl/libxl_bootloader.c
@@ -49,9 +49,11 @@ static char **make_bootloader_args(libxl__gc *gc,
flexarray_set(args, nr++, libxl__sprintf(gc, "--output-directory=%s", "/var/run/libxl/"));
if (info->u.pv.bootloader_args) {
- char *p = info->u.pv.bootloader_args[0];
- while (*(p++))
- flexarray_set(args, nr++, p);
+ char **p = info->u.pv.bootloader_args;
+ while (*p) {
+ flexarray_set(args, nr++, *p);
+ p++;
+ }
}
flexarray_set(args, nr++, disk);