Skip to content

Commit

Permalink
qga: make split_list() return allocated strings
Browse files Browse the repository at this point in the history
In order to avoid any confusion, let's allocate new strings when
splitting.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Denis V. Lunev <den@openvz.org>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
  • Loading branch information
elmarco authored and mdroth committed Sep 1, 2015
1 parent 23b4289 commit 4bca81c
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 18 deletions.
6 changes: 3 additions & 3 deletions qga/commands-posix.c
Expand Up @@ -2454,7 +2454,7 @@ GList *ga_command_blacklist_init(GList *blacklist)
char **p = (char **)list;

while (*p) {
blacklist = g_list_append(blacklist, *p++);
blacklist = g_list_append(blacklist, g_strdup(*p++));
}
}
#endif
Expand All @@ -2468,13 +2468,13 @@ GList *ga_command_blacklist_init(GList *blacklist)
char **p = (char **)list;

while (*p) {
blacklist = g_list_append(blacklist, *p++);
blacklist = g_list_append(blacklist, g_strdup(*p++));
}
}
#endif

#if !defined(CONFIG_FSTRIM)
blacklist = g_list_append(blacklist, (char *)"guest-fstrim");
blacklist = g_list_append(blacklist, g_strdup("guest-fstrim"));
#endif

return blacklist;
Expand Down
4 changes: 2 additions & 2 deletions qga/commands-win32.c
Expand Up @@ -1233,7 +1233,7 @@ GList *ga_command_blacklist_init(GList *blacklist)
char **p = (char **)list_unsupported;

while (*p) {
blacklist = g_list_append(blacklist, *p++);
blacklist = g_list_append(blacklist, g_strdup(*p++));
}

if (!vss_init(true)) {
Expand All @@ -1244,7 +1244,7 @@ GList *ga_command_blacklist_init(GList *blacklist)
p = (char **)list;

while (*p) {
blacklist = g_list_append(blacklist, *p++);
blacklist = g_list_append(blacklist, g_strdup(*p++));
}
}

Expand Down
22 changes: 9 additions & 13 deletions qga/main.c
Expand Up @@ -921,22 +921,17 @@ static void ga_print_cmd(QmpCommand *cmd, void *opaque)
printf("%s\n", qmp_command_name(cmd));
}

static GList *split_list(gchar *str, const gchar separator)
static GList *split_list(const gchar *str, const gchar *delim)
{
GList *list = NULL;
int i, j, len;
int i;
gchar **strv;

for (j = 0, i = 0, len = strlen(str); i < len; i++) {
if (str[i] == separator) {
str[i] = 0;
list = g_list_append(list, &str[j]);
j = i + 1;
}
}

if (j < i) {
list = g_list_append(list, &str[j]);
strv = g_strsplit(str, delim, -1);
for (i = 0; strv[i]; i++) {
list = g_list_prepend(list, strv[i]);
}
g_free(strv);

return list;
}
Expand Down Expand Up @@ -1021,7 +1016,7 @@ int main(int argc, char **argv)
qmp_for_each_command(ga_print_cmd, NULL);
exit(EXIT_SUCCESS);
}
blacklist = g_list_concat(blacklist, split_list(optarg, ','));
blacklist = g_list_concat(blacklist, split_list(optarg, ","));
break;
}
#ifdef _WIN32
Expand Down Expand Up @@ -1201,6 +1196,7 @@ int main(int argc, char **argv)
}
#endif

g_list_free_full(ga_state->blacklist, g_free);
ga_command_state_cleanup_all(ga_state->command_state);
ga_channel_free(ga_state->channel);

Expand Down

0 comments on commit 4bca81c

Please sign in to comment.