aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-rtps.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-11-06 16:51:19 +0000
committerMichael Mann <mmann78@netscape.net>2013-11-06 16:51:19 +0000
commit55922b6bac36a4c443200b438cb072d364068b19 (patch)
treebbba94e66b03a2fee0c971c42137a4aa3ede7231 /epan/dissectors/packet-rtps.c
parentc278a0ac0aa851c7ed37961039802dc7f2ee1b5b (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.c26
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;