diff options
author | Bruno Verstuyft <bruno.verstuyft@excentis.com> | 2019-05-23 13:36:28 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2019-05-28 06:49:53 +0000 |
commit | c3ea14ece4bae8c587f435def1c3dcb551654b91 (patch) | |
tree | 2d004702428cdb15e052b895e067edd97a1cafd2 | |
parent | d0bb4e64ccc0a300eb0b0fbb88094f464da07b7e (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.c | 9 |
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; } } } |