aboutsummaryrefslogtreecommitdiffstats
path: root/epan/wslua
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2019-01-25 18:02:46 +0100
committerPeter Wu <peter@lekensteyn.nl>2019-01-27 09:40:56 +0000
commit311d087bbdec5e6a93d740327fdff82ad6a13dde (patch)
treee124f27e5ca6528a25e9609a2c45e3c6df61f108 /epan/wslua
parenta1ee099ffa76ee54bc12564979790ce917914981 (diff)
wslua_listener: fix memleak in tap packet callback
Addresses memleaks reported by ASAN for: test_wslua_listener test_wslua_nstime test_wslua_pinfo test_wslua_field Change-Id: I221382844ee0bfd7ffc274bbb27eded0e221f9cf Reviewed-on: https://code.wireshark.org/review/31742 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'epan/wslua')
-rw-r--r--epan/wslua/wslua_listener.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/epan/wslua/wslua_listener.c b/epan/wslua/wslua_listener.c
index 2f86ac89b5..289e1622e9 100644
--- a/epan/wslua/wslua_listener.c
+++ b/epan/wslua/wslua_listener.c
@@ -71,6 +71,7 @@ static int tap_packet_cb_error_handler(lua_State* L) {
static tap_packet_status lua_tap_packet(void *tapdata, packet_info *pinfo, epan_dissect_t *edt, const void *data) {
Listener tap = (Listener)tapdata;
tap_packet_status retval = TAP_PACKET_DONT_REDRAW;
+ TreeItem lua_tree_tap;
if (tap->packet_ref == LUA_NOREF) return TAP_PACKET_DONT_REDRAW; /* XXX - report error and return TAP_PACKET_FAILED? */
@@ -90,7 +91,8 @@ static tap_packet_status lua_tap_packet(void *tapdata, packet_info *pinfo, epan_
lua_pinfo = pinfo;
lua_tvb = edt->tvb;
- lua_tree = create_TreeItem(edt->tree, NULL);
+ lua_tree_tap = create_TreeItem(edt->tree, NULL);
+ lua_tree = lua_tree_tap;
switch ( lua_pcall(tap->L,3,1,1) ) {
case 0:
@@ -115,6 +117,7 @@ static tap_packet_status lua_tap_packet(void *tapdata, packet_info *pinfo, epan_
lua_pinfo = NULL;
lua_tvb = NULL;
lua_tree = NULL;
+ g_free(lua_tree_tap);
return retval;
}