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>
This commit is contained in:
Michael Mann 2014-11-13 20:37:46 -05:00
parent 4a7dd62012
commit 6e535a8b71
1 changed files with 7 additions and 3 deletions

View File

@ -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;