diff options
author | Anders Broman <anders.broman@ericsson.com> | 2007-09-11 16:59:57 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2007-09-11 16:59:57 +0000 |
commit | 84553b468c1c59f912cdb4979191cac4737e1756 (patch) | |
tree | 25f02124c7a718f7663f9b5d542416ce561ca0de | |
parent | 0d0799c3061f1d55dcba0c8721c7bb3710b19937 (diff) |
From cyrille colin:
PATCH : SNDCP reassembly fails / overlaps when same NPDU number in another call
http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=1755
svn path=/trunk/; revision=22846
-rw-r--r-- | epan/dissectors/packet-sndcp.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/epan/dissectors/packet-sndcp.c b/epan/dissectors/packet-sndcp.c index cf7504caa5..2d1daa6b67 100644 --- a/epan/dissectors/packet-sndcp.c +++ b/epan/dissectors/packet-sndcp.c @@ -102,10 +102,13 @@ static dissector_handle_t ip_handle; /* reassembly of N-PDU */ static GHashTable *npdu_fragment_table = NULL; +static GHashTable *sndcp_reassembled_table = NULL; + static void sndcp_defragment_init(void) { fragment_table_init(&npdu_fragment_table); + reassembled_table_init(&sndcp_reassembled_table); } /* value strings @@ -331,8 +334,8 @@ dissect_sndcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) pinfo->fragmented = TRUE; if (unack) - fd_npdu = fragment_add_seq(tvb, offset, pinfo, npdu, - npdu_fragment_table, segment, len, more_frags); + fd_npdu = fragment_add_seq_check(tvb, offset, pinfo, npdu, + npdu_fragment_table, sndcp_reassembled_table, segment, len, more_frags); else fd_npdu = fragment_add(tvb, offset, pinfo, npdu, npdu_fragment_table, offset, len, more_frags); |