in nfs name to filehandle mappings

when we check and ignore the two names "." and ".."
we must do so for both methods a caller can provide the name :
offset into a tvb, as well as a char* to a string.

also add ->full_name in the dissection to the replies  so that fh 
matches
both request and reply and not ->name



svn path=/trunk/; revision=25941
This commit is contained in:
Ronnie Sahlberg 2008-08-06 06:45:44 +00:00
parent a4412aa3c1
commit e0e1c45922
4 changed files with 3718 additions and 128 deletions

View File

@ -52,6 +52,7 @@ PIDL_DISSECTOR_SRC = \
packet-dcerpc-budb.c \
packet-dcerpc-butc.c \
packet-dcerpc-dfs.c \
packet-dcerpc-dnsserver.c \
packet-dcerpc-drsuapi.c \
packet-dcerpc-dssetup.c \
packet-dcerpc-efs.c \
@ -281,7 +282,6 @@ CLEAN_DISSECTOR_SRC = \
packet-dcerpc-conv.c \
packet-dcerpc-cprpc_server.c \
packet-dcerpc-dce122.c \
packet-dcerpc-dnsserver.c \
packet-dcerpc-dtsprovider.c \
packet-dcerpc-dtsstime_req.c \
packet-dcerpc-epm.c \

File diff suppressed because it is too large Load Diff

View File

@ -1,42 +1,138 @@
/* packet-dcerpc-dnsserver.h
* Routines for SMB \PIPE\DNSSERVER packet disassembly
* Copyright 2002, Tim Potter <tpot@samba.org>
*
* $Id$
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* autogenerated by pidl */
/* DO NOT EDIT
This filter was automatically generated
from dnsserver.idl and dnsserver.cnf.
Pidl is a perl based IDL compiler for DCE/RPC idl files.
It is maintained by the Samba team, not the Wireshark team.
Instructions on how to download and install Pidl can be
found at http://wiki.wireshark.org/Pidl
*/
#ifndef __PACKET_DCERPC_DNSSERVER_H
#define __PACKET_DCERPC_DNSSERVER_H
/* Functions available on the DNSSERVER pipe */
#define DNS_LOG_LEVEL_ALL_PACKETS ( 0x0000ffff )
#define DNSSERVER_DNSSRV_OPERATION 0x00
#define DNSSERVER_DNSSRV_QUERY 0x01
#define DNSSERVER_DNSSRV_COMPLEX_OPERATION 0x02
#define DNSSERVER_DNSSRV_ENUM_RECORDS 0x03
#define DNSSERVER_DNSSRV_UPDATE_RECORD 0x04
#define DNSSERVER_DNSSRV_OPERATION_2 0x05
#define DNSSERVER_DNSSRV_QUERY_2 0x06
#define DNSSERVER_DNSSRV_COMPLEX_OPERATION_2 0x07
#define DNSSERVER_DNSSRV_ENUM_RECORDS_2 0x08
#define DNSSERVER_DNSSRV_UPDATE_RECORD_2 0x09
#define DNS_LOG_LEVEL_NON_QUERY ( 0x000000fe )
#endif /* packet-dcerpc-dnsserver.h */
#define DNS_RPC_USE_ALL_PROTOCOLS ( 0xffffffff )
#define DNS_CLIENT_VERSION_W2K (0x00000000)
#define DNS_CLIENT_VERSION_DOTNET (0x00000006)
#define DNS_CLIENT_VERSION_LONGHORN (0x00000007)
extern const value_string dnsserver_DNS_RPC_CLIENT_VERSION_vals[];
int dnsserver_dissect_enum_DNS_RPC_CLIENT_VERSION(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_);
int dnsserver_dissect_struct_DNS_RPC_VERSION(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
#define DNS_RPC_BOOT_METHOD_FILE (0x01)
#define DNS_RPC_BOOT_METHOD_REGISTRY (0x02)
#define DNS_RPC_BOOT_METHOD_DIRECTORY (0x03)
extern const value_string dnsserver_DNS_RPC_BOOT_METHOD_vals[];
int dnsserver_dissect_enum_DNS_RPC_BOOT_METHOD(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_);
int dnsserver_dissect_bitmap_DNS_LOG_LEVELS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int dnsserver_dissect_bitmap_DNS_RPC_PROTOCOLS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
#define DNS_ALLOW_RFC_NAMES_ONLY (0x00000000)
#define DNS_ALLOW_NONRFC_NAMES (0x00000001)
#define DNS_ALLOW_MULTIBYTE_NAMES (0x00000002)
#define DNS_ALLOW_ALL_NAMES (0x00000003)
extern const value_string dnsserver_DNS_NAME_CHECK_FLAGS_vals[];
int dnsserver_dissect_enum_DNS_NAME_CHECK_FLAGS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_);
#define DNS_TYPE_ZERO (0x0000)
#define DNS_TYPE_A (0x0001)
#define DNS_TYPE_NS (0x0002)
#define DNS_TYPE_MD (0x0003)
#define DNS_TYPE_MF (0x0004)
#define DNS_TYPE_CNAME (0x0005)
#define DNS_TYPE_SOA (0x0006)
#define DNS_TYPE_MB (0x0007)
#define DNS_TYPE_MG (0x0008)
#define DNS_TYPE_MR (0x0009)
#define DNS_TYPE_NULL (0x000a)
#define DNS_TYPE_WKS (0x000b)
#define DNS_TYPE_PTR (0x000c)
#define DNS_TYPE_HINFO (0x000d)
#define DNS_TYPE_MINFO (0x000e)
#define DNS_TYPE_MX (0x000f)
#define DNS_TYPE_TXT (0x0010)
#define DNS_TYPE_RP (0x0011)
#define DNS_TYPE_AFSDB (0x0012)
#define DNS_TYPE_X25 (0x0013)
#define DNS_TYPE_ISDN (0x0014)
#define DNS_TYPE_RT (0x0015)
#define DNS_TYPE_NSAP (0x0016)
#define DNS_TYPE_NSAPPTR (0x0017)
#define DNS_TYPE_SIG (0x0018)
#define DNS_TYPE_KEY (0x0019)
#define DNS_TYPE_PX (0x001a)
#define DNS_TYPE_GPOS (0x001b)
#define DNS_TYPE_AAAA (0x001c)
#define DNS_TYPE_LOC (0x001d)
#define DNS_TYPE_NXT (0x001e)
#define DNS_TYPE_SRV (0x0021)
#define DNS_TYPE_ATMA (0x0022)
#define DNS_TYPE_NAPTR (0x0023)
#define DNS_TYPE_DNAME (0x0024)
#define DNS_TYPE_ALL (0x00ff)
#define DNS_TYPE_WINS (0xff01)
#define DNS_TYPE_WINSR (0xff02)
extern const value_string dnsserver_DNS_RECORD_TYPE_vals[];
int dnsserver_dissect_enum_DNS_RECORD_TYPE(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_);
int dnsserver_dissect_bitmap_DNS_SELECT_FLAGS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int dnsserver_dissect_bitmap_DNS_RPC_NODE_FLAGS(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int dnsserver_dissect_struct_DNS_RPC_NAME(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int dnsserver_dissect_struct_DNS_RPC_RECORD_NODE_NAME(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int dnsserver_dissect_struct_DNS_RPC_RECORD(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int dnsserver_dissect_struct_DNS_RPC_NODE(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int dnsserver_dissect_struct_IP4_ARRAY(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
int dnsserver_dissect_struct_DNS_RPC_SERVER_INFO_DOTNET(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
#define DNSSRV_TYPEID_NULL (0)
#define DNSSRV_TYPEID_DWORD (1)
#define DNSSRV_TYPEID_LPSTR (2)
#define DNSSRV_TYPEID_LPWSTR (3)
#define DNSSRV_TYPEID_IPARRAY (4)
#define DNSSRV_TYPEID_BUFFER (5)
#define DNSSRV_TYPEID_SERVER_INFO_W2K (6)
#define DNSSRV_TYPEID_STATS (7)
#define DNSSRV_TYPEID_FORWARDERS_W2K (8)
#define DNSSRV_TYPEID_ZONE_W2K (9)
#define DNSSRV_TYPEID_ZONE_INFO_W2K (10)
#define DNSSRV_TYPEID_ZONE_SECONDARIES_W2K (11)
#define DNSSRV_TYPEID_ZONE_DATABASE_W2K (12)
#define DNSSRV_TYPEID_ZONE_TYPE_RESET_W2K (13)
#define DNSSRV_TYPEID_ZONE_CREATE_W2K (14)
#define DNSSRV_TYPEID_NAME_AND_PARAM (15)
#define DNSSRV_TYPEID_ZONE_LIST_W2K (16)
#define DNSSRV_TYPEID_ZONE_RENAME (17)
#define DNSSRV_TYPEID_ZONE_EXPORT (18)
#define DNSSRV_TYPEID_SERVER_INFO_DOTNET (19)
#define DNSSRV_TYPEID_FORWARDERS_DOTNET (20)
#define DNSSRV_TYPEID_ZONE (21)
#define DNSSRV_TYPEID_ZONE_INFO_DOTNET (22)
#define DNSSRV_TYPEID_ZONE_SECONDARIES_DOTNET (23)
#define DNSSRV_TYPEID_ZONE_DATABASE (24)
#define DNSSRV_TYPEID_ZONE_TYPE_RESET_DOTNET (25)
#define DNSSRV_TYPEID_ZONE_CREATE_DOTNET (26)
#define DNSSRV_TYPEID_ZONE_LIST (27)
#define DNSSRV_TYPEID_DP_ENUM (28)
#define DNSSRV_TYPEID_DP_INFO (29)
#define DNSSRV_TYPEID_DP_LIST (30)
#define DNSSRV_TYPEID_ENLIST_DP (31)
#define DNSSRV_TYPEID_ZONE_CHANGE_DP (32)
#define DNSSRV_TYPEID_ENUM_ZONES_FILTER (33)
#define DNSSRV_TYPEID_ADDARRAY (34)
#define DNSSRV_TYPEID_SERVER_INFO (35)
#define DNSSRV_TYPEID_ZONE_INFO (36)
#define DNSSRV_TYPEID_FORWARDERS (37)
#define DNSSRV_TYPEID_ZONE_SECONDARIES (38)
#define DNSSRV_TYPEID_ZONE_TYPE_RESET (39)
#define DNSSRV_TYPEID_ZONE_CREATE (40)
#define DNSSRV_TYPEID_IP_VALIDATE (41)
#define DNSSRV_TYPEID_AUTOCONFIGURE (42)
#define DNSSRV_TYPEID_UTF8_STRING_LIST (43)
#define DNSSRV_TYPEID_UNICODE_STRING_LIST (44)
extern const value_string dnsserver_DnssrvRpcTypeId_vals[];
int dnsserver_dissect_enum_DnssrvRpcTypeId(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_);
int dnsserver_dissect_struct_DNS_RECORD_BUFFER(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_);
#endif /* __PACKET_DCERPC_DNSSERVER_H */

View File

@ -792,15 +792,17 @@ nfs_name_snoop_add_name(int xid, tvbuff_t *tvb, int name_offset, int name_len, i
/* filter out all '.' and '..' names */
if(!name){
ptr=(const unsigned char *)tvb_get_ptr(tvb, name_offset, name_len);
if(ptr[0]=='.'){
if(ptr[1]==0){
} else {
ptr=name;
}
if(ptr[0]=='.'){
if(ptr[1]==0){
return;
}
if(ptr[1]=='.'){
if(ptr[2]==0){
return;
}
if(ptr[1]=='.'){
if(ptr[2]==0){
return;
}
}
}
}
@ -1009,11 +1011,11 @@ nfs_name_snoop_fh(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int fh_of
if(nns->full_name){
if(hidden){
fh_item=proto_tree_add_string(tree, hf_nfs_full_name, tvb,
fh_offset, 0, nns->name);
fh_offset, 0, nns->full_name);
PROTO_ITEM_SET_HIDDEN(fh_item);
} else {
fh_item=proto_tree_add_string_format(tree, hf_nfs_full_name, tvb,
fh_offset, 0, nns->name, "Full Name: %s", nns->full_name);
fh_offset, 0, nns->full_name, "Full Name: %s", nns->full_name);
}
PROTO_ITEM_SET_GENERATED(fh_item);
}