aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-gtp.c
diff options
context:
space:
mode:
authorIvan Nardi <nardi.ivan@gmail.com>2018-05-07 08:16:54 +0200
committerPascal Quantin <pascal.quantin@gmail.com>2018-05-07 19:03:45 +0000
commit6c0f6f52d3fc61f6012a0a8637ad87031d09c0b1 (patch)
treee87dc3505a418a89d43ab345cc24361439d438b5 /epan/dissectors/packet-gtp.c
parent6e9c3438bca1c594b2fdadd1a210af097dac5bbb (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.c8
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) {