aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Verstuyft <bruno.verstuyft@excentis.com>2019-05-23 13:36:28 +0200
committerAnders Broman <a.broman58@gmail.com>2019-05-28 06:49:53 +0000
commitc3ea14ece4bae8c587f435def1c3dcb551654b91 (patch)
tree2d004702428cdb15e052b895e067edd97a1cafd2
parentd0bb4e64ccc0a300eb0b0fbb88094f464da07b7e (diff)
XRA: PLC can contain multiple MMM messages
Change-Id: Ic43200df5fe94818ba6fffa4bf2609213777df5f Reviewed-on: https://code.wireshark.org/review/33330 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--epan/dissectors/packet-xra.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/epan/dissectors/packet-xra.c b/epan/dissectors/packet-xra.c
index 3dd30d057e..5575e91de3 100644
--- a/epan/dissectors/packet-xra.c
+++ b/epan/dissectors/packet-xra.c
@@ -751,11 +751,13 @@ dissect_message_channel_mb(tvbuff_t * tvb, packet_info * pinfo, proto_tree* tree
/*If not present, this contains stuff from other packet. We can't do much in this case*/
if(packet_start_pointer_field_present) {
guint16 docsis_start = 3 + packet_start_pointer;
- if(docsis_start +6 < remaining_length) {
+ while (docsis_start + 6 < remaining_length) {
/*DOCSIS header in packet*/
guint8 fc = tvb_get_guint8(tvb,docsis_start + 0);
if (fc == 0xFF) {
- return;
+ //skip fill bytes
+ docsis_start += 1;
+ continue;
}
guint16 docsis_length = 256*tvb_get_guint8(tvb,docsis_start + 2) + tvb_get_guint8(tvb,docsis_start + 3);
if (docsis_start + 6 + docsis_length <= remaining_length) {
@@ -765,8 +767,11 @@ dissect_message_channel_mb(tvbuff_t * tvb, packet_info * pinfo, proto_tree* tree
docsis_tvb = tvb_new_subset_length(tvb, docsis_start, docsis_length + 6);
if (docsis_handle) {
call_dissector (docsis_handle, docsis_tvb, pinfo, tree);
+ col_append_str(pinfo->cinfo, COL_INFO, "; ");
+ col_set_fence(pinfo->cinfo,COL_INFO);
}
}
+ docsis_start += 6 + docsis_length;
}
}
}