Commit b12e0b88 authored by Kjell Ahlstedt's avatar Kjell Ahlstedt Committed by Matthias Clasen

goption: Don't return pointers to deallocated memory

g_option_context_parse() can return pointers to deallocated strings, if the
command line contains an unknown option.

https://bugzilla.gnome.org/show_bug.cgi?id=646926
parent 7bf31065
......@@ -1281,9 +1281,12 @@ parse_arg (GOptionContext *context,
change = get_change (context, G_OPTION_ARG_STRING,
entry->arg_data);
g_free (change->allocated.str);
change->prev.str = *(gchar **)entry->arg_data;
if (!change->allocated.str)
change->prev.str = *(gchar **)entry->arg_data;
else
g_free (change->allocated.str);
change->allocated.str = data;
*(gchar **)entry->arg_data = data;
......@@ -1345,9 +1348,12 @@ parse_arg (GOptionContext *context,
#endif
change = get_change (context, G_OPTION_ARG_FILENAME,
entry->arg_data);
g_free (change->allocated.str);
change->prev.str = *(gchar **)entry->arg_data;
if (!change->allocated.str)
change->prev.str = *(gchar **)entry->arg_data;
else
g_free (change->allocated.str);
change->allocated.str = data;
*(gchar **)entry->arg_data = data;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment