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>
This commit is contained in:
Stig Bjørlykke 2015-12-23 08:41:07 +01:00
parent ab754d6ba4
commit 976642ab0a
3 changed files with 8 additions and 7 deletions

View File

@ -109,7 +109,7 @@ typedef enum {
} dissector_table_allow_e;
typedef void (*DATFunc) (const gchar *table_name, ftenum_t selector_type,
gpointer key, gpointer value, gpointer user_data);
const gpointer key, gpointer value, gpointer user_data);
typedef void (*DATFunc_handle) (const gchar *table_name, gpointer value,
gpointer user_data);
typedef void (*DATFunc_table) (const gchar *table_name, const gchar *ui_name,

View File

@ -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);

View File

@ -685,7 +685,7 @@ decode_simple (GtkWidget *notebook_pg)
if (add_reset_list) {
selector_type = g_new(guint,1);
*selector_type = GPOINTER_TO_UINT(value_ptr);
decode_build_reset_list(g_strdup(table_name), FT_UINT32, selector_type, NULL, NULL);
decode_build_reset_list(table_name, FT_UINT32, selector_type, NULL, NULL);
}
}