summaryrefslogtreecommitdiff
path: root/epan/dissectors/packet-dsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-dsi.c')
-rw-r--r--epan/dissectors/packet-dsi.c21
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);