aboutsummaryrefslogtreecommitdiffstats
path: root/packet-nbns.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2001-09-29 00:57:36 +0000
committerGuy Harris <guy@alum.mit.edu>2001-09-29 00:57:36 +0000
commit096770328914d454c8a7267c4ec14b23c9a73977 (patch)
tree99b20c72cdc5b36b948537e8f1baab383f302ebd /packet-nbns.c
parent168a986072dcef20db2ded2f26662eec3ff9108a (diff)
Have "dissect_netbios_payload()" take as an argument a tvbuff containing
only the NetBIOS payload, and have the NBSS dissector construct tvbuffs of that sort (i.e., stop at the end of the NBSS session message, not at the end of the data handed to the NBSS dissector). svn path=/trunk/; revision=3972
Diffstat (limited to 'packet-nbns.c')
-rw-r--r--packet-nbns.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/packet-nbns.c b/packet-nbns.c
index 986faf0705..c0694fb1d4 100644
--- a/packet-nbns.c
+++ b/packet-nbns.c
@@ -4,7 +4,7 @@
* Gilbert Ramirez <gram@xiexie.org>
* Much stuff added by Guy Harris <guy@alum.mit.edu>
*
- * $Id: packet-nbns.c,v 1.58 2001/09/29 00:00:26 guy Exp $
+ * $Id: packet-nbns.c,v 1.59 2001/09/29 00:57:36 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -1158,7 +1158,6 @@ dissect_nbdgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
int msglen;
int flags;
int message_index;
- int max_data = tvb_length_remaining(tvb, offset);
tvbuff_t *next_tvb;
static const value_string error_codes[] = {
@@ -1241,7 +1240,6 @@ dissect_nbdgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
offset += 10;
- max_data -= 10;
switch (header.msg_type) {
@@ -1256,7 +1254,6 @@ dissect_nbdgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
offset += 4;
- max_data -= 4;
/* Source name */
len = get_nbns_name(tvb, offset, offset, name, &name_type);
@@ -1266,7 +1263,6 @@ dissect_nbdgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Source name", name, name_type);
}
offset += len;
- max_data -= len;
/* Destination name */
len = get_nbns_name(tvb, offset, offset, name, &name_type);
@@ -1276,7 +1272,6 @@ dissect_nbdgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
"Destination name", name, name_type);
}
offset += len;
- max_data -= len;
/*
* Here we can pass the packet off to the next protocol.
@@ -1284,7 +1279,8 @@ dissect_nbdgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
* only our stuff.
*/
proto_item_set_len(ti, offset);
- dissect_netbios_payload(tvb, offset, pinfo, tree, max_data);
+ next_tvb = tvb_new_subset(tvb, offset, -1, -1);
+ dissect_netbios_payload(next_tvb, pinfo, tree);
break;
case NBDS_ERROR:
@@ -1374,6 +1370,8 @@ dissect_nbss_packet(tvbuff_t *tvb, int offset, packet_info *pinfo,
int len;
char name[(NETBIOS_NAME_LEN - 1)*4 + MAXDNAME];
int name_type;
+ gint reported_len;
+ tvbuff_t *next_tvb;
msg_type = tvb_get_guint8(tvb, offset);
@@ -1484,12 +1482,19 @@ dissect_nbss_packet(tvbuff_t *tvb, int offset, packet_info *pinfo,
case SESSION_MESSAGE:
/*
- * Here we can pass the packet off to the next protocol.
+ * Here we can pass the message off to the next protocol.
* Set the length of our top-level tree item to include
* only our stuff.
*/
proto_item_set_len(ti, offset);
- dissect_netbios_payload(tvb, offset, pinfo, tree, length);
+ len = tvb_length_remaining(tvb, offset);
+ reported_len = tvb_reported_length_remaining(tvb, offset);
+ if (len > length)
+ len = length;
+ if (reported_len > length)
+ reported_len = length;
+ next_tvb = tvb_new_subset(tvb, offset, len, reported_len);
+ dissect_netbios_payload(next_tvb, pinfo, tree);
break;
}