diff options
Diffstat (limited to 'epan/dissectors/packet-dsi.c')
-rw-r--r-- | epan/dissectors/packet-dsi.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/epan/dissectors/packet-dsi.c b/epan/dissectors/packet-dsi.c index 1c8c6b386c..124cb75ff6 100644 --- a/epan/dissectors/packet-dsi.c +++ b/epan/dissectors/packet-dsi.c @@ -344,7 +344,8 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset) sign_ofs = tvb_get_ntohs(tvb, ofs); proto_tree_add_text(tree, tvb, ofs, 2, "Signature offset: %d", sign_ofs); - sign_ofs += offset; + if (sign_ofs) + sign_ofs += offset; if ((flag & AFPSRVRINFO_TCPIP)) { ofs += 2; @@ -367,12 +368,15 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset) } } - ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_MACHOFF); - if (ofs) + ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_MACHOFF); + if (ofs) { + ofs += offset; proto_tree_add_item(tree, hf_dsi_server_type, tvb, ofs, 1, ENC_ASCII|ENC_NA); + } - ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF); + ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF); if (ofs) { + ofs += offset; nbe = tvb_get_guint8(tvb, ofs); ti = proto_tree_add_text(tree, tvb, ofs, 1, "Version list: %d", nbe); ofs++; @@ -384,8 +388,9 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset) } } - ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_UAMSOFF); + ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_UAMSOFF); if (ofs) { + ofs += offset; nbe = tvb_get_guint8(tvb, ofs); ti = proto_tree_add_text(tree, tvb, ofs, 1, "UAMS list: %d", nbe); ofs++; @@ -397,9 +402,11 @@ dissect_dsi_reply_get_status(tvbuff_t *tvb, proto_tree *tree, gint offset) } } - ofs = offset +tvb_get_ntohs(tvb, offset +AFPSTATUS_ICONOFF); - if (ofs) + ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_ICONOFF); + if (ofs) { + ofs += offset; proto_tree_add_item(tree, hf_dsi_server_icon, tvb, ofs, 256, ENC_NA); + } if (sign_ofs) { proto_tree_add_item(tree, hf_dsi_server_signature, tvb, sign_ofs, 16, ENC_NA); |