forked from osmocom/wireshark
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:
parent
ab754d6ba4
commit
976642ab0a
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue