aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-tcp.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-11-13 20:37:46 -0500
committerMichael Mann <mmann78@netscape.net>2014-11-14 03:46:23 +0000
commit6e535a8b7143dd61f59fa0680692c94a0d22e916 (patch)
treec3b977edf2f08827ebc148ada48041f33d511cc1 /epan/dissectors/packet-tcp.c
parent4a7dd620125f1b8711c70f9dbfe78ba1145e31e3 (diff)
Multipath TCP checksum requires M flag set as well as enough option length.
Bug: 10692 Change-Id: I8d9874a2c0a6b98497d43804bcf27a8c7e152a9b Reviewed-on: https://code.wireshark.org/review/5275 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-tcp.c')
-rw-r--r--epan/dissectors/packet-tcp.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c
index 39f4d38d51..c6225f1ca2 100644
--- a/epan/dissectors/packet-tcp.c
+++ b/epan/dissectors/packet-tcp.c
@@ -2740,6 +2740,7 @@ dissect_tcpopt_mptcp(const ip_tcp_opt *optp _U_, tvbuff_t *tvb,
guint8 indx;
guint8 flags;
guint8 ipver;
+ int start_offset = offset;
mptcp_tree = proto_tree_add_subtree(opt_tree, tvb, offset, optlen, ett_tcp_option_mptcp, &ti, "Multipath TCP");
@@ -2912,9 +2913,12 @@ dissect_tcpopt_mptcp(const ip_tcp_opt *optp _U_, tvbuff_t *tvb,
2, ENC_BIG_ENDIAN);
offset += 2;
- proto_tree_add_item(mptcp_tree,
- hf_tcp_option_mptcp_checksum, tvb, offset,
- 2, ENC_BIG_ENDIAN);
+ if ((int)optlen >= offset-start_offset+4)
+ {
+ proto_tree_add_item(mptcp_tree,
+ hf_tcp_option_mptcp_checksum, tvb, offset,
+ 2, ENC_BIG_ENDIAN);
+ }
}
break;