diff options
author | Jeff Morriss <jeff.morriss@ulticom.com> | 2011-01-11 22:41:19 +0000 |
---|---|---|
committer | Jeff Morriss <jeff.morriss@ulticom.com> | 2011-01-11 22:41:19 +0000 |
commit | 1c5d75288c8f5b83659f4f5969ca0ef4a2cde2f9 (patch) | |
tree | 76ba5efb9a4d428983c234049be737211d117ab7 /epan | |
parent | 6e7d85a92cd4c3549e2e6d6c3c456596f111a68b (diff) | |
download | wireshark-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.c | 7 |
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); |