diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2015-12-23 08:41:07 +0100 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2015-12-23 08:45:50 +0000 |
commit | 976642ab0a6099010d08113fe4080010d39ab766 (patch) | |
tree | 7993d31f5434e585981cd0c523b63569b7b48ce9 /ui/decode_as_utils.c | |
parent | ab754d6ba4c0bc6d8d00aec137d8b1e97331d1f4 (diff) |
ui: Plug memory leak in decode_build_reset_list.
The strings passed to decode_build_reset_list() is not freed, so
ensure we cleanup in decode_clear_all().
Change-Id: Ib68bde71403e260199482831272beb161fe033f9
Reviewed-on: https://code.wireshark.org/review/12836
Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
Diffstat (limited to 'ui/decode_as_utils.c')
-rw-r--r-- | ui/decode_as_utils.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/ui/decode_as_utils.c b/ui/decode_as_utils.c index 93e165bb58..22ff62ab26 100644 --- a/ui/decode_as_utils.c +++ b/ui/decode_as_utils.c @@ -146,8 +146,7 @@ read_set_decode_as_entries(gchar *key, const gchar *value, } } if (is_valid) { - decode_build_reset_list(g_strdup(values[0]), selector_type, - g_strdup(values[1]), NULL, NULL); + decode_build_reset_list(values[0], selector_type, values[1], NULL, NULL); } } else { retval = PREFS_SET_SYNTAX_ERR; @@ -183,13 +182,13 @@ load_decode_as_entries(void) void decode_build_reset_list (const gchar *table_name, ftenum_t selector_type, - gpointer key, gpointer value _U_, + const gpointer key, gpointer value _U_, gpointer user_data _U_) { dissector_delete_item_t *item; item = g_new(dissector_delete_item_t,1); - item->ddi_table_name = table_name; + item->ddi_table_name = g_strdup(table_name); item->ddi_selector_type = selector_type; switch (selector_type) { @@ -204,7 +203,7 @@ decode_build_reset_list (const gchar *table_name, ftenum_t selector_type, case FT_STRINGZ: case FT_UINT_STRING: case FT_STRINGZPAD: - item->ddi_selector.sel_string = (char *)key; + item->ddi_selector.sel_string = g_strdup((char *)key); break; default: @@ -240,11 +239,13 @@ decode_clear_all(void) case FT_STRINGZPAD: dissector_reset_string(item->ddi_table_name, item->ddi_selector.sel_string); + g_free(item->ddi_selector.sel_string); break; default: g_assert_not_reached(); } + g_free((gchar *)item->ddi_table_name); g_free(item); } g_slist_free(dissector_reset_list); |