[glib] goption: Don't return pointers to deallocated memory
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] goption: Don't return pointers to deallocated memory
- Date: Tue, 13 Sep 2016 02:29:08 +0000 (UTC)
commit b12e0b886936099a5bcca834a582b3e51241bd4c
Author: Kjell Ahlstedt <kjell ahlstedt bredband net>
Date: Wed Aug 31 19:09:52 2016 +0200
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
glib/goption.c | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/glib/goption.c b/glib/goption.c
index 0464c2e..3afdc96 100644
--- a/glib/goption.c
+++ b/glib/goption.c
@@ -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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]