mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 18:50:05 +01:00
xl: Fix adding additional config cmdline parameters
When checking the size of the buffer we hold for additional config parameters passed on the command line we should take the size of the to-be-added string into account. While at it, rework the implementation to be cleaner and safer. Signed-off-by: Andre Przywara <andre.przywara@amd.com> Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
1 parent
5ab30725b1
commit
a48b2967f9
1 file changed
+5
-9
@@ -3179,21 +3179,17 @@ int main_create(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");
|
||||
strcat(extra_config, argv[optind]);
|
||||
}
|
||||
extra_config[0] = '\0';
|
||||
for (p = extra_config; optind < argc; optind++) {
|
||||
if (strchr(argv[optind], '=') != NULL) {
|
||||
p += snprintf(p, sizeof(extra_config) - (p - extra_config),
|
||||
"%s\n", argv[optind]);
|
||||
} else if (!filename) {
|
||||
filename = argv[optind];
|
||||
} else {
|
||||
help("create");
|
||||
return 2;
|
||||
}
|
||||
optind++;
|
||||
}
|
||||
|
||||
memset(&dom_info, 0, sizeof(dom_info));
|
||||
|
||||