aboutsummaryrefslogtreecommitdiffstats
path: root/packet-ypserv.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2002-02-02 03:02:06 +0000
committerGuy Harris <guy@alum.mit.edu>2002-02-02 03:02:06 +0000
commitae0d2eb20e506422a051a29dade50af7a452b3b0 (patch)
treeb9618ce63dc4055355ae6d7eb3f18c115a1fac0e /packet-ypserv.c
parent6fd493715ed41cb4da95fdfc8a4eca68c3fc6d4e (diff)
When creating an subtree with variable-length items under it, use -1 as
the initial length, and set the length at the end, rather than constructing the length from "tvb_length_remaining()". svn path=/trunk/; revision=4673
Diffstat (limited to 'packet-ypserv.c')
-rw-r--r--packet-ypserv.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/packet-ypserv.c b/packet-ypserv.c
index 5dd4770b18..fdab29b3fa 100644
--- a/packet-ypserv.c
+++ b/packet-ypserv.c
@@ -1,7 +1,7 @@
/* packet-ypserv.c
* Routines for ypserv dissection
*
- * $Id: packet-ypserv.c,v 1.18 2001/12/23 21:36:58 guy Exp $
+ * $Id: packet-ypserv.c,v 1.19 2002/02/02 03:02:06 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -192,24 +192,25 @@ dissect_next_call(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tre
static int
dissect_xfr_call(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
{
- proto_item *lock_item=NULL;
- proto_tree *lock_tree=NULL;
+ proto_item *sub_item=NULL;
+ proto_tree *sub_tree=NULL;
+ int start_offset = offset;
guint32 tid;
if(tree){
- lock_item = proto_tree_add_item(tree, hf_ypserv_map_parms, tvb,
- offset, tvb_length_remaining(tvb, offset)-12, FALSE);
- if(lock_item)
- lock_tree = proto_item_add_subtree(lock_item, ett_ypserv_map_parms);
+ sub_item = proto_tree_add_item(tree, hf_ypserv_map_parms, tvb,
+ offset, -1, FALSE);
+ if(sub_item)
+ sub_tree = proto_item_add_subtree(sub_item, ett_ypserv_map_parms);
}
- offset = dissect_rpc_string(tvb, pinfo, lock_tree, hf_ypserv_domain, offset, NULL);
+ offset = dissect_rpc_string(tvb, pinfo, sub_tree, hf_ypserv_domain, offset, NULL);
- offset = dissect_rpc_string(tvb, pinfo, lock_tree, hf_ypserv_map, offset, NULL);
+ offset = dissect_rpc_string(tvb, pinfo, sub_tree, hf_ypserv_map, offset, NULL);
- offset = dissect_rpc_uint32(tvb, pinfo, lock_tree, hf_ypserv_ordernum, offset);
+ offset = dissect_rpc_uint32(tvb, pinfo, sub_tree, hf_ypserv_ordernum, offset);
- offset = dissect_rpc_string(tvb, pinfo, lock_tree, hf_ypserv_peer, offset, NULL);
+ offset = dissect_rpc_string(tvb, pinfo, sub_tree, hf_ypserv_peer, offset, NULL);
tid=tvb_get_ntohl(tvb,offset);
@@ -220,6 +221,9 @@ dissect_xfr_call(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree
offset = dissect_rpc_uint32(tvb, pinfo, tree, hf_ypserv_prog, offset);
offset = dissect_rpc_uint32(tvb, pinfo, tree, hf_ypserv_port, offset);
+ if(sub_item)
+ proto_item_set_len(sub_item, offset - start_offset);
+
return offset;
}