diff options
author | Michael Mann <mmann78@netscape.net> | 2013-11-06 16:51:19 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-11-06 16:51:19 +0000 |
commit | 55922b6bac36a4c443200b438cb072d364068b19 (patch) | |
tree | bbba94e66b03a2fee0c971c42137a4aa3ede7231 /epan/dissectors/packet-rtps.c | |
parent | c278a0ac0aa851c7ed37961039802dc7f2ee1b5b (diff) |
Fix for checking RTPS sub message length. Bug 9378 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9378)
From Steve Osselton
#BACKPORT(1.10)
svn path=/trunk/; revision=53107
Diffstat (limited to 'epan/dissectors/packet-rtps.c')
-rw-r--r-- | epan/dissectors/packet-rtps.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/epan/dissectors/packet-rtps.c b/epan/dissectors/packet-rtps.c index 9d5f80834e..f4bffeeb4b 100644 --- a/epan/dissectors/packet-rtps.c +++ b/epan/dissectors/packet-rtps.c @@ -6037,9 +6037,16 @@ void dissect_INFO_SRC(tvbuff_t *tvb, packet_info *pinfo, gint offset, guint8 fla octet_item = proto_tree_add_item(tree, hf_rtps_sm_octets_to_next_header, tvb, offset + 2, 2, little_endian ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN); - if (octets_to_next_header != 16) { - expert_add_info_format(pinfo, octet_item, &ei_rtps_sm_octets_to_next_header_error, "(Error: should be == 16)"); - return; + if (rtps_version < 0x0200) { + if (octets_to_next_header != 16) { + expert_add_info_format(pinfo, octet_item, &ei_rtps_sm_octets_to_next_header_error, "(Error: should be == 16)"); + return; + } + } else { + if (octets_to_next_header != 20) { + expert_add_info_format(pinfo, octet_item, &ei_rtps_sm_octets_to_next_header_error, "(Error: should be == 20)"); + return; + } } offset += 4; @@ -6177,9 +6184,16 @@ static void dissect_INFO_DST(tvbuff_t *tvb, packet_info *pinfo, gint offset, gui octet_item = proto_tree_add_item(tree, hf_rtps_sm_octets_to_next_header, tvb, offset + 2, 2, little_endian ? ENC_LITTLE_ENDIAN : ENC_BIG_ENDIAN); - if (octets_to_next_header != 8) { - expert_add_info_format(pinfo, octet_item, &ei_rtps_sm_octets_to_next_header_error, "(Error: should be == 8)"); - return; + if (version < 0x0200) { + if (octets_to_next_header != 8) { + expert_add_info_format(pinfo, octet_item, &ei_rtps_sm_octets_to_next_header_error, "(Error: should be == 8)"); + return; + } + } else { + if (octets_to_next_header != 12) { + expert_add_info_format(pinfo, octet_item, &ei_rtps_sm_octets_to_next_header_error, "(Error: should be == 12)"); + return; + } } offset += 4; |