aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuergen Gross <juergen.gross@ts.fujitsu.com>2011-02-14 16:55:00 +0000
committerJuergen Gross <juergen.gross@ts.fujitsu.com>2011-02-14 16:55:00 +0000
commitb948a2f41ac78959e883f12bd4ca011b906d814f (patch)
treede7b845088e72d3b6c6748f515b3ab3e375432b2
parent7a52b5c131faa242c9b37b60ef53b3a913c54520 (diff)
downloadxen-b948a2f41ac78959e883f12bd4ca011b906d814f.tar.gz
xen-b948a2f41ac78959e883f12bd4ca011b906d814f.tar.bz2
xen-b948a2f41ac78959e883f12bd4ca011b906d814f.zip
xl: correct xl cpupool-create with extra parameters
xl cpupool-create won't take always extra parameters specified on the command line, as a 0-byte is missing at the end of the configuration file contents. Signed-off-by: Juergen Gross <juergen.gross@ts.fujitsu.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com> Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
-rw-r--r--tools/libxl/xl_cmdimpl.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index 313a2261e3..89540f72e0 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -5204,7 +5204,7 @@ int main_cpupoolcreate(int argc, char **argv)
{0, 0, 0, 0}
};
int ret;
- void *config_data = 0;
+ char *config_data = 0;
int config_len = 0;
XLU_Config *config;
const char *buf;
@@ -5244,9 +5244,8 @@ int main_cpupoolcreate(int argc, char **argv)
memset(extra_config, 0, sizeof(extra_config));
while (optind < argc) {
if ((p = strchr(argv[optind], '='))) {
- if (strlen(extra_config) + 1 < sizeof(extra_config)) {
- if (strlen(extra_config))
- strcat(extra_config, "\n");
+ if (strlen(extra_config) + 1 + strlen(argv[optind]) < sizeof(extra_config)) {
+ strcat(extra_config, "\n");
strcat(extra_config, argv[optind]);
}
} else if (!filename) {
@@ -5263,7 +5262,7 @@ int main_cpupoolcreate(int argc, char **argv)
return -ERROR_FAIL;
}
- if (libxl_read_file_contents(&ctx, filename, &config_data, &config_len)) {
+ if (libxl_read_file_contents(&ctx, filename, (void **)&config_data, &config_len)) {
fprintf(stderr, "Failed to read config file: %s: %s\n",
filename, strerror(errno));
return -ERROR_FAIL;
@@ -5279,10 +5278,10 @@ int main_cpupoolcreate(int argc, char **argv)
fprintf(stderr, "Failed to realloc config_data\n");
return -ERROR_FAIL;
}
- strcat(config_data, "\n");
+ config_data[config_len] = 0;
strcat(config_data, extra_config);
strcat(config_data, "\n");
- config_len += (strlen(extra_config) + 2);
+ config_len += strlen(extra_config) + 1;
}
config = xlu_cfg_init(stderr, filename);