aboutsummaryrefslogtreecommitdiffstats
path: root/packet-nfs.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2000-01-22 05:49:08 +0000
committerGuy Harris <guy@alum.mit.edu>2000-01-22 05:49:08 +0000
commit167999e61e4cae6350754f99ecb21f9671b5278b (patch)
tree69d34b82d53e62c60326b0d34a7d629b29f4db0b /packet-nfs.c
parent0b41709f86e069cb8b94a9fadec050eb6a0514dd (diff)
downloadwireshark-167999e61e4cae6350754f99ecb21f9671b5278b.tar.gz
wireshark-167999e61e4cae6350754f99ecb21f9671b5278b.tar.bz2
wireshark-167999e61e4cae6350754f99ecb21f9671b5278b.zip
Give "dissect_rpc_string()" an extra "char **" argument; if it's
non-null, it returns through that argument a pointer to the displayed version of the string, otherwise it just frees that string. Use that to put, in the tree item for READDIR and READDIRPLUS reply directory entry items, the file name from the directory entry. svn path=/trunk/; revision=1521
Diffstat (limited to 'packet-nfs.c')
-rw-r--r--packet-nfs.c48
1 files changed, 33 insertions, 15 deletions
diff --git a/packet-nfs.c b/packet-nfs.c
index 3e18772cab..eba7f06f62 100644
--- a/packet-nfs.c
+++ b/packet-nfs.c
@@ -2,7 +2,7 @@
* Routines for nfs dissection
* Copyright 1999, Uwe Girlich <Uwe.Girlich@philosys.de>
*
- * $Id: packet-nfs.c,v 1.19 2000/01/18 11:56:15 girlich Exp $
+ * $Id: packet-nfs.c,v 1.20 2000/01/22 05:49:04 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -473,9 +473,10 @@ dissect_sattr(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, ch
/* RFC 1094, Page 17 */
int
-dissect_filename(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, int hf)
+dissect_filename(const u_char *pd, int offset, frame_data *fd,
+ proto_tree *tree, int hf, char **string_ret)
{
- offset = dissect_rpc_string(pd,offset,fd,tree,hf);
+ offset = dissect_rpc_string(pd,offset,fd,tree,hf,string_ret);
return offset;
}
@@ -484,7 +485,7 @@ dissect_filename(const u_char *pd, int offset, frame_data *fd, proto_tree *tree,
int
dissect_path(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, int hf)
{
- offset = dissect_rpc_string(pd,offset,fd,tree,hf);
+ offset = dissect_rpc_string(pd,offset,fd,tree,hf,NULL);
return offset;
}
@@ -534,7 +535,7 @@ dissect_diropargs(const u_char *pd, int offset, frame_data *fd, proto_tree *tree
}
offset = dissect_fhandle (pd,offset,fd,diropargs_tree,"dir");
- offset = dissect_filename(pd,offset,fd,diropargs_tree,hf_nfs_name);
+ offset = dissect_filename(pd,offset,fd,diropargs_tree,hf_nfs_name,NULL);
/* now we know, that diropargs is shorter */
if (diropargs_item) {
@@ -782,6 +783,7 @@ dissect_readdir_entry(const u_char* pd, int offset, frame_data* fd, proto_tree*
int old_offset = offset;
guint32 fileid;
guint32 cookie;
+ char *name;
if (tree) {
entry_item = proto_tree_add_item(tree, hf_nfs_readdir_entry,
@@ -790,14 +792,21 @@ dissect_readdir_entry(const u_char* pd, int offset, frame_data* fd, proto_tree*
entry_tree = proto_item_add_subtree(entry_item, ett_nfs_readdir_entry);
}
- if (!BYTES_ARE_IN_FRAME(offset, 4)) return offset;
+ if (!BYTES_ARE_IN_FRAME(offset, 4)) {
+ proto_item_set_text(entry_item, "Entry: <TRUNCATED>");
+ return offset;
+ }
fileid = EXTRACT_UINT(pd, offset + 0);
if (entry_tree)
proto_tree_add_item(entry_tree, hf_nfs_readdir_entry_fileid,
offset+0, 4, fileid);
offset += 4;
- offset = dissect_filename(pd, offset, fd, entry_tree, hf_nfs_readdir_entry_name);
+ offset = dissect_filename(pd, offset, fd, entry_tree,
+ hf_nfs_readdir_entry_name, &name);
+ proto_item_set_text(entry_item, "Entry: file ID %u, name %s",
+ fileid, name);
+ g_free(name);
if (!BYTES_ARE_IN_FRAME(offset, 4)) return offset;
cookie = EXTRACT_UINT(pd, offset + 0);
@@ -968,9 +977,10 @@ char* name)
/* RFC 1813, Page 15 */
int
-dissect_filename3(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, int hf)
+dissect_filename3(const u_char *pd, int offset, frame_data *fd,
+ proto_tree *tree, int hf, char **string_ret)
{
- offset = dissect_rpc_string(pd,offset,fd,tree,hf);
+ offset = dissect_rpc_string(pd,offset,fd,tree,hf,string_ret);
return offset;
}
@@ -979,7 +989,7 @@ dissect_filename3(const u_char *pd, int offset, frame_data *fd, proto_tree *tree
int
dissect_nfspath3(const u_char *pd, int offset, frame_data *fd, proto_tree *tree, int hf)
{
- offset = dissect_rpc_string(pd,offset,fd,tree,hf);
+ offset = dissect_rpc_string(pd,offset,fd,tree,hf,NULL);
return offset;
}
@@ -1898,7 +1908,7 @@ dissect_diropargs3(const u_char *pd, int offset, frame_data *fd, proto_tree *tre
}
offset = dissect_nfs_fh3 (pd, offset, fd, diropargs3_tree, "dir");
- offset = dissect_filename3(pd, offset, fd, diropargs3_tree, hf_nfs_name);
+ offset = dissect_filename3(pd, offset, fd, diropargs3_tree, hf_nfs_name,NULL);
/* now we know, that diropargs3 is shorter */
if (diropargs3_item) {
@@ -2496,6 +2506,7 @@ dissect_entry3(const u_char* pd, int offset, frame_data* fd, proto_tree* tree)
proto_item* entry_item = NULL;
proto_tree* entry_tree = NULL;
int old_offset = offset;
+ char *name;
if (tree) {
entry_item = proto_tree_add_item(tree, hf_nfs_readdir_entry,
@@ -2506,8 +2517,11 @@ dissect_entry3(const u_char* pd, int offset, frame_data* fd, proto_tree* tree)
offset = dissect_fileid3(pd, offset, fd, entry_tree, "fileid");
- offset = dissect_filename3(pd, offset, fd, entry_tree, hf_nfs_readdir_entry_name);
-
+ offset = dissect_filename3(pd, offset, fd, entry_tree,
+ hf_nfs_readdir_entry_name, &name);
+ proto_item_set_text(entry_item, "Entry: name %s", name);
+ g_free(name);
+
offset = dissect_cookie3(pd, offset, fd, entry_tree, "cookie");
/* now we know, that a readdir entry is shorter */
@@ -2582,6 +2596,7 @@ dissect_entryplus3(const u_char* pd, int offset, frame_data* fd, proto_tree* tre
proto_item* entry_item = NULL;
proto_tree* entry_tree = NULL;
int old_offset = offset;
+ char *name;
if (tree) {
entry_item = proto_tree_add_item(tree, hf_nfs_readdir_entry,
@@ -2592,8 +2607,11 @@ dissect_entryplus3(const u_char* pd, int offset, frame_data* fd, proto_tree* tre
offset = dissect_fileid3(pd, offset, fd, entry_tree, "fileid");
- offset = dissect_filename3(pd, offset, fd, entry_tree, hf_nfs_readdirplus_entry_name);
-
+ offset = dissect_filename3(pd, offset, fd, entry_tree,
+ hf_nfs_readdirplus_entry_name, &name);
+ proto_item_set_text(entry_item, "Entry: name %s", name);
+ g_free(name);
+
offset = dissect_cookie3(pd, offset, fd, entry_tree, "cookie");
offset = dissect_post_op_attr(pd, offset, fd, entry_tree, "name_attributes");