summaryrefslogtreecommitdiff
path: root/epan
diff options
context:
space:
mode:
authorJeff Morriss <jeff.morriss@ulticom.com>2011-01-11 22:41:19 +0000
committerJeff Morriss <jeff.morriss@ulticom.com>2011-01-11 22:41:19 +0000
commit1c5d75288c8f5b83659f4f5969ca0ef4a2cde2f9 (patch)
tree76ba5efb9a4d428983c234049be737211d117ab7 /epan
parent6e7d85a92cd4c3549e2e6d6c3c456596f111a68b (diff)
downloadwireshark-1c5d75288c8f5b83659f4f5969ca0ef4a2cde2f9.tar.gz
Don't attempt to reassemble short (reported_len > len) chunks.
svn path=/trunk/; revision=35486
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-sctp.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/epan/dissectors/packet-sctp.c b/epan/dissectors/packet-sctp.c
index a44b6b5e4d..c887d910f0 100644
--- a/epan/dissectors/packet-sctp.c
+++ b/epan/dissectors/packet-sctp.c
@@ -2604,6 +2604,13 @@ dissect_fragmented_payload(tvbuff_t *payload_tvb, packet_info *pinfo, proto_tree
sctp_fragment* fragment;
tvbuff_t* new_tvb = NULL;
+ /*
+ * If this is a short frame, then we can't, and don't, do
+ * reassembly on it. We just give up.
+ */
+ if (tvb_reported_length(payload_tvb) > tvb_length(payload_tvb))
+ return TRUE;
+
/* add fragement to list of known fragments. returns NULL if segment is a duplicate */
fragment = add_fragment(payload_tvb, pinfo, chunk_tree, tsn, stream_id, stream_seq_num, b_bit, e_bit);