aboutsummaryrefslogtreecommitdiffstats
path: root/packet-smb.c
diff options
context:
space:
mode:
authorRichard Sharpe <sharpe@ns.aus.com>1999-11-27 02:17:49 +0000
committerRichard Sharpe <sharpe@ns.aus.com>1999-11-27 02:17:49 +0000
commitb09955d91ddfc5e357d4845d2e8cf27b1b56f6c8 (patch)
treecaf5b0729c48091fd99cab7b16c6c82711c5dc73 /packet-smb.c
parent422ad3afe015c83f54d82cb10a40e1862b43ca40 (diff)
downloadwireshark-b09955d91ddfc5e357d4845d2e8cf27b1b56f6c8.tar.gz
wireshark-b09955d91ddfc5e357d4845d2e8cf27b1b56f6c8.tar.bz2
wireshark-b09955d91ddfc5e357d4845d2e8cf27b1b56f6c8.zip
Fixed the problem of crashing when a NetServerEnum2 with Level 0 is
seen. svn path=/trunk/; revision=1122
Diffstat (limited to 'packet-smb.c')
-rw-r--r--packet-smb.c56
1 files changed, 32 insertions, 24 deletions
diff --git a/packet-smb.c b/packet-smb.c
index edd6c1c17b..e6b35bc186 100644
--- a/packet-smb.c
+++ b/packet-smb.c
@@ -2,7 +2,7 @@
* Routines for smb packet dissection
* Copyright 1999, Richard Sharpe <rsharpe@ns.aus.com>
*
- * $Id: packet-smb.c,v 1.47 1999/11/26 06:27:18 sharpe Exp $
+ * $Id: packet-smb.c,v 1.48 1999/11/27 02:17:49 sharpe Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@unicom.net>
@@ -104,6 +104,7 @@ struct smb_request_val {
guint16 last_lanman_cmd;
gchar *last_param_descrip; /* Keep these descriptors around */
gchar *last_data_descrip;
+ guint16 last_level; /* Last level in request */
};
struct smb_info {
@@ -9921,6 +9922,7 @@ dissect_pipe_lanman(const u_char *pd, int offset, frame_data *fd, proto_tree *pa
loc_offset += strlen(ReturnDescriptor) + 1;
Level = GSHORT(pd, loc_offset);
+ si.request_val -> last_level = Level;
if (tree) {
@@ -10169,7 +10171,9 @@ dissect_pipe_lanman(const u_char *pd, int offset, frame_data *fd, proto_tree *pa
if (tree) {
- ti = proto_tree_add_text(server_tree, loc_offset, 26, "Server %s", Server);
+ ti = proto_tree_add_text(server_tree, loc_offset,
+ (si.request_val -> last_level) ? 26 : 16,
+ "Server %s", Server);
server = proto_item_add_subtree(ti, ett_lanman_server);
@@ -10183,47 +10187,51 @@ dissect_pipe_lanman(const u_char *pd, int offset, frame_data *fd, proto_tree *pa
loc_offset += 16;
- ServerMajor = GBYTE(pd, loc_offset);
+ if (si.request_val -> last_level) { /* Print out the rest of the info */
- if (tree) {
+ ServerMajor = GBYTE(pd, loc_offset);
- proto_tree_add_text(server, loc_offset, 1, "Major Version: %u", ServerMajor);
+ if (tree) {
- }
+ proto_tree_add_text(server, loc_offset, 1, "Major Version: %u", ServerMajor);
- loc_offset += 1;
+ }
- ServerMinor = GBYTE(pd, loc_offset);
+ loc_offset += 1;
- if (tree) {
+ ServerMinor = GBYTE(pd, loc_offset);
- proto_tree_add_text(server, loc_offset, 1, "Minor Version: %u", ServerMinor);
+ if (tree) {
- }
+ proto_tree_add_text(server, loc_offset, 1, "Minor Version: %u", ServerMinor);
- loc_offset += 1;
+ }
- ServerFlags = GWORD(pd, loc_offset);
+ loc_offset += 1;
- if (tree) {
+ ServerFlags = GWORD(pd, loc_offset);
- ti = proto_tree_add_text(server, loc_offset, 4, "Server Type: 0x%08X", ServerFlags);
- flags_tree = proto_item_add_subtree(ti, ett_browse_flags);
- dissect_server_flags(flags_tree, loc_offset, 4, ServerFlags);
+ if (tree) {
- }
+ ti = proto_tree_add_text(server, loc_offset, 4, "Server Type: 0x%08X", ServerFlags);
+ flags_tree = proto_item_add_subtree(ti, ett_browse_flags);
+ dissect_server_flags(flags_tree, loc_offset, 4, ServerFlags);
- loc_offset += 4;
+ }
- Comment = pd + SMB_offset + DataOffset + GWORD(pd, loc_offset);
+ loc_offset += 4;
- if (tree) {
+ Comment = pd + SMB_offset + DataOffset + GWORD(pd, loc_offset);
- proto_tree_add_text(server, loc_offset, 4, "Server Comment: %s", Comment);
+ if (tree) {
- }
+ proto_tree_add_text(server, loc_offset, 4, "Server Comment: %s", Comment);
- loc_offset += 4;
+ }
+
+ loc_offset += 4;
+
+ }
}