diff options
author | Peter Wu <peter@lekensteyn.nl> | 2016-09-16 17:05:55 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2016-09-17 10:44:23 +0000 |
commit | 2c33f74bc68c0356eb44a11918d690ac8f26ab63 (patch) | |
tree | 6864b150058ac0ca83ca21a6707a6e114a881972 /extcap.c | |
parent | 05ae6a7560a8f39daac073d2094fdcde6975a4ec (diff) |
extcap: fix heap-use-after free after saving prefs
All strings passed to prefs must be valid for the lifetime of the
program (before prefs_cleanup is called). Use wmem for this purpose.
Fixes v2.3.0rc0-660-g26bf66f
Change-Id: I94f3bbb8ac6e18ae59d6462525f6bbc46fdb0f1f
Reviewed-on: https://code.wireshark.org/review/17737
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'extcap.c')
-rw-r--r-- | extcap.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -606,6 +606,7 @@ static gboolean search_cb(const gchar *extcap _U_, const gchar *ifname _U_, gcha if ( ( pref = prefs_find_preference(dev_module, pref_ifname) ) == NULL ) { char *pref_name_for_prefs; + char *pref_title = wmem_strdup(wmem_epan_scope(), arg->display); arg->pref_valptr = extcap_prefs_dynamic_valptr(pref_ifname, &pref_name_for_prefs); /* Set an initial value if any (the string will be copied at registration) */ @@ -614,7 +615,7 @@ static gboolean search_cb(const gchar *extcap _U_, const gchar *ifname _U_, gcha } prefs_register_string_preference(dev_module, pref_name_for_prefs, - arg->display, arg->display, (const char **)arg->pref_valptr); + pref_title, pref_title, (const char **)arg->pref_valptr); } else { /* Been here before, restore stored value */ if (! arg->pref_valptr && pref->varp.string) |