diff options
author | Ivan Nardi <nardi.ivan@gmail.com> | 2018-05-07 08:16:54 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2018-05-07 19:03:45 +0000 |
commit | 6c0f6f52d3fc61f6012a0a8637ad87031d09c0b1 (patch) | |
tree | e87dc3505a418a89d43ab345cc24361439d438b5 /epan/dissectors/packet-gtp.c | |
parent | 6e9c3438bca1c594b2fdadd1a210af097dac5bbb (diff) |
gtp, gtpv2: fix memory leaks in association code (found via ASAN)
Change-Id: Id8891dffa3c4db3ec82de3a0597550eb73a1d25f
Reviewed-on: https://code.wireshark.org/review/27380
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-gtp.c')
-rw-r--r-- | epan/dissectors/packet-gtp.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/epan/dissectors/packet-gtp.c b/epan/dissectors/packet-gtp.c index c0e82bbe1f..c9ffd56d72 100644 --- a/epan/dissectors/packet-gtp.c +++ b/epan/dissectors/packet-gtp.c @@ -5461,7 +5461,7 @@ decode_gtp_gsn_addr(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_t if (g_gtp_session && gtp_version == 1 && !PINFO_FD_VISITED(pinfo)) { if (!ip_exists(*gsn_address, args->ip_list)) { - copy_address(&args->last_ip, gsn_address); + copy_address_wmem(wmem_packet_scope(), &args->last_ip, gsn_address); wmem_list_prepend(args->ip_list, gsn_address); } } @@ -8425,11 +8425,7 @@ track_gtp_session(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, gtp_hd else { /* We have to check if its teid == teid_cp and ip.dst == gsn_ipv4 from the lists, if that is the case then we have to assign the corresponding session ID */ - const address * dst_address; - address gsn_address; - dst_address = &pinfo->dst; - copy_address(&gsn_address, dst_address); - if ((get_frame(gsn_address, (guint32)gtp_hdr->teid, &frame_teid_cp) == 1)) { + if ((get_frame(pinfo->dst, (guint32)gtp_hdr->teid, &frame_teid_cp) == 1)) { /* Then we have to set its session ID */ session = (guint32*)g_hash_table_lookup(session_table, &frame_teid_cp); if (session != NULL) { |