aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packet-dcerpc-lsa.c6
-rw-r--r--packet-dcerpc-netlogon.c6
-rw-r--r--packet-dcerpc-nt.c66
-rw-r--r--packet-dcerpc-nt.h6
-rw-r--r--packet-dcerpc-samr.c6
-rw-r--r--packet-dcerpc-spoolss.c4
-rw-r--r--packet-dcerpc-srvsvc.c8
7 files changed, 82 insertions, 20 deletions
diff --git a/packet-dcerpc-lsa.c b/packet-dcerpc-lsa.c
index 0d53f45b3b..b221c35634 100644
--- a/packet-dcerpc-lsa.c
+++ b/packet-dcerpc-lsa.c
@@ -3,7 +3,7 @@
* Copyright 2001,2003 Tim Potter <tpot@samba.org>
* 2002 Added LSA command dissectors Ronnie Sahlberg
*
- * $Id: packet-dcerpc-lsa.c,v 1.73 2003/04/03 05:43:58 tpot Exp $
+ * $Id: packet-dcerpc-lsa.c,v 1.74 2003/04/27 00:49:13 sahlberg Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -598,7 +598,7 @@ lsa_dissect_lsaopenpolicy2_rqst(tvbuff_t *tvb, int offset,
{
offset = dissect_ndr_pointer_cb(tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE, "Server",
- hf_lsa_server, cb_str_postprocess,
+ hf_lsa_server, cb_wstr_postprocess,
GINT_TO_POINTER(CB_STR_COL_INFO | CB_STR_SAVE | 1));
offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
@@ -2719,7 +2719,7 @@ lsa_dissect_lsaopensecret_rqst(tvbuff_t *tvb, int offset,
/* [in, ref] LSA_UNICODE_STRING *name */
offset = dissect_ndr_counted_string_cb(
tvb, offset, pinfo, tree, drep, hf_lsa_name,
- cb_str_postprocess,
+ cb_wstr_postprocess,
GINT_TO_POINTER(CB_STR_COL_INFO | 1));
/* [in] ACCESS_MASK access */
diff --git a/packet-dcerpc-netlogon.c b/packet-dcerpc-netlogon.c
index e3978a1358..7bddecf788 100644
--- a/packet-dcerpc-netlogon.c
+++ b/packet-dcerpc-netlogon.c
@@ -3,7 +3,7 @@
* Copyright 2001,2003 Tim Potter <tpot@samba.org>
* 2002 structure and command dissectors by Ronnie Sahlberg
*
- * $Id: packet-dcerpc-netlogon.c,v 1.76 2003/02/14 06:17:20 tpot Exp $
+ * $Id: packet-dcerpc-netlogon.c,v 1.77 2003/04/27 00:49:13 sahlberg Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -1403,7 +1403,7 @@ netlogon_dissect_netserverreqchallenge_rqst(tvbuff_t *tvb, int offset,
tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, NDR_POINTER_REF,
"Computer Name", hf_netlogon_computer_name,
- cb_str_postprocess,
+ cb_wstr_postprocess,
GINT_TO_POINTER(CB_STR_COL_INFO | 1));
offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
@@ -3807,7 +3807,7 @@ netlogon_dissect_netserverauthenticate2_rqst(tvbuff_t *tvb, int offset,
tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, NDR_POINTER_REF,
"User Name", hf_netlogon_acct_name,
- cb_str_postprocess, GINT_TO_POINTER(CB_STR_COL_INFO | 1));
+ cb_wstr_postprocess, GINT_TO_POINTER(CB_STR_COL_INFO | 1));
offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
pinfo, tree, drep);
diff --git a/packet-dcerpc-nt.c b/packet-dcerpc-nt.c
index d5f0385280..b223a78606 100644
--- a/packet-dcerpc-nt.c
+++ b/packet-dcerpc-nt.c
@@ -2,7 +2,7 @@
* Routines for DCERPC over SMB packet disassembly
* Copyright 2001-2003, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-nt.c,v 1.70 2003/04/27 00:34:27 guy Exp $
+ * $Id: packet-dcerpc-nt.c,v 1.71 2003/04/27 00:49:13 sahlberg Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -114,7 +114,7 @@ dissect_ndr_counted_string_helper(tvbuff_t *tvb, int offset,
*/
return dissect_ndr_counted_string_cb(
tvb, offset, pinfo, subtree, drep, hf_index,
- cb_str_postprocess, GINT_TO_POINTER(2 + levels));
+ cb_wstr_postprocess, GINT_TO_POINTER(2 + levels));
}
/* Dissect a counted string in-line. */
@@ -663,7 +663,7 @@ dissect_ndr_uint16s(tvbuff_t *tvb, gint offset, packet_info *pinfo,
* Helper routines for dissecting NDR strings
*/
-void cb_str_postprocess(packet_info *pinfo, proto_tree *tree _U_,
+void cb_wstr_postprocess(packet_info *pinfo, proto_tree *tree _U_,
proto_item *item, tvbuff_t *tvb,
int start_offset, int end_offset,
void *callback_args)
@@ -723,6 +723,64 @@ void cb_str_postprocess(packet_info *pinfo, proto_tree *tree _U_,
g_free(s);
}
+void cb_str_postprocess(packet_info *pinfo, proto_tree *tree _U_,
+ proto_item *item, tvbuff_t *tvb,
+ int start_offset, int end_offset,
+ void *callback_args)
+{
+ gint options = GPOINTER_TO_INT(callback_args);
+ gint levels = CB_STR_ITEM_LEVELS(options);
+ char *s;
+
+ /* Align start_offset on 4-byte boundary. */
+
+ if (start_offset % 4)
+ start_offset += 4 - (start_offset % 4);
+
+ /* Get string value */
+
+ if ((end_offset - start_offset) <= 12)
+ return; /* XXX: Use unistr2 dissector instead? */
+
+ s = tvb_get_ptr(tvb, start_offset + 12, (end_offset - start_offset - 12) );
+
+ /* Append string to COL_INFO */
+
+ if (options & CB_STR_COL_INFO) {
+ if (check_col(pinfo->cinfo, COL_INFO))
+ col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", s);
+ }
+
+ /* Append string to upper-level proto_items */
+
+ if (levels > 0 && item && s && s[0]) {
+ proto_item_append_text(item, ": %s", s);
+ item = item->parent;
+ levels--;
+ if (levels > 0) {
+ proto_item_append_text(item, ": %s", s);
+ item = item->parent;
+ levels--;
+ while (levels > 0) {
+ proto_item_append_text(item, " %s", s);
+ item = item->parent;
+ levels--;
+ }
+ }
+ }
+
+ /* Save string to dcv->private_data */
+
+ if (options & CB_STR_SAVE) {
+ dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
+ dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
+
+ dcv->private_data = g_strdup(s);
+ }
+
+ g_free(s);
+}
+
/* Dissect a pointer to a NDR string and append the string value to the
proto_item. */
@@ -734,7 +792,7 @@ int dissect_ndr_str_pointer_item(tvbuff_t *tvb, gint offset,
return dissect_ndr_pointer_cb(
tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, type, text, hf_index,
- cb_str_postprocess, GINT_TO_POINTER(levels + 1));
+ cb_wstr_postprocess, GINT_TO_POINTER(levels + 1));
}
/*
diff --git a/packet-dcerpc-nt.h b/packet-dcerpc-nt.h
index 587df61184..0c33c1727f 100644
--- a/packet-dcerpc-nt.h
+++ b/packet-dcerpc-nt.h
@@ -2,7 +2,7 @@
* Routines for DCERPC over SMB packet disassembly
* Copyright 2001-2003 Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-nt.h,v 1.41 2003/02/08 09:41:44 guy Exp $
+ * $Id: packet-dcerpc-nt.h,v 1.42 2003/04/27 00:49:13 sahlberg Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -185,6 +185,10 @@ int dissect_ndr_str_pointer_item(tvbuff_t *tvb, gint offset,
#define CB_STR_COL_INFO 0x10000 /* Append string to COL_INFO */
#define CB_STR_SAVE 0x20000 /* Save string to dcv->private_data */
+void cb_wstr_postprocess(packet_info *pinfo, proto_tree *tree _U_,
+ proto_item *item, tvbuff_t *tvb,
+ int start_offset, int end_offset,
+ void *callback_args);
void cb_str_postprocess(packet_info *pinfo, proto_tree *tree _U_,
proto_item *item, tvbuff_t *tvb,
int start_offset, int end_offset,
diff --git a/packet-dcerpc-samr.c b/packet-dcerpc-samr.c
index 5f3a9ab9e6..58dd51357c 100644
--- a/packet-dcerpc-samr.c
+++ b/packet-dcerpc-samr.c
@@ -3,7 +3,7 @@
* Copyright 2001,2003 Tim Potter <tpot@samba.org>
* 2002 Added all command dissectors Ronnie Sahlberg
*
- * $Id: packet-dcerpc-samr.c,v 1.83 2003/04/03 05:43:58 tpot Exp $
+ * $Id: packet-dcerpc-samr.c,v 1.84 2003/04/27 00:49:13 sahlberg Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -1135,7 +1135,7 @@ samr_dissect_connect2_rqst(tvbuff_t *tvb, int offset,
offset = dissect_ndr_pointer_cb(
tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
- "Server", hf_samr_server, cb_str_postprocess,
+ "Server", hf_samr_server, cb_wstr_postprocess,
GINT_TO_POINTER(CB_STR_COL_INFO | CB_STR_SAVE | 1));
offset = dissect_nt_access_mask(
@@ -1153,7 +1153,7 @@ samr_dissect_connect4_rqst(tvbuff_t *tvb, int offset,
offset = dissect_ndr_pointer_cb(
tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
- "Server", hf_samr_server, cb_str_postprocess,
+ "Server", hf_samr_server, cb_wstr_postprocess,
GINT_TO_POINTER(CB_STR_COL_INFO | 1));
offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
diff --git a/packet-dcerpc-spoolss.c b/packet-dcerpc-spoolss.c
index a5b62167b4..a9503c1c5c 100644
--- a/packet-dcerpc-spoolss.c
+++ b/packet-dcerpc-spoolss.c
@@ -2,7 +2,7 @@
* Routines for SMB \PIPE\spoolss packet disassembly
* Copyright 2001-2003, Tim Potter <tpot@samba.org>
*
- * $Id: packet-dcerpc-spoolss.c,v 1.95 2003/04/15 08:11:33 guy Exp $
+ * $Id: packet-dcerpc-spoolss.c,v 1.96 2003/04/27 00:49:14 sahlberg Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -2465,7 +2465,7 @@ static int SpoolssOpenPrinterEx_q(tvbuff_t *tvb, int offset,
offset = dissect_ndr_pointer_cb(
tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
- "Printer name", hf_printername, cb_str_postprocess,
+ "Printer name", hf_printername, cb_wstr_postprocess,
GINT_TO_POINTER(CB_STR_COL_INFO | CB_STR_SAVE | 1));
offset = dissect_ndr_pointer(
diff --git a/packet-dcerpc-srvsvc.c b/packet-dcerpc-srvsvc.c
index b862db9ef9..9510c032f8 100644
--- a/packet-dcerpc-srvsvc.c
+++ b/packet-dcerpc-srvsvc.c
@@ -9,7 +9,7 @@
* 2002, some share information levels implemented based on samba
* sources.
*
- * $Id: packet-dcerpc-srvsvc.c,v 1.54 2003/04/26 00:44:20 sharpe Exp $
+ * $Id: packet-dcerpc-srvsvc.c,v 1.55 2003/04/27 00:49:14 sahlberg Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -2948,13 +2948,13 @@ srvsvc_dissect_netrsharegetinfo_rqst(tvbuff_t *tvb, int offset,
offset = dissect_ndr_pointer_cb(
tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
- "Server", hf_srvsvc_server, cb_str_postprocess,
+ "Server", hf_srvsvc_server, cb_wstr_postprocess,
GINT_TO_POINTER(CB_STR_COL_INFO | 1));
offset = dissect_ndr_pointer_cb(
tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, NDR_POINTER_REF,
- "Share", hf_srvsvc_share, cb_str_postprocess,
+ "Share", hf_srvsvc_share, cb_wstr_postprocess,
GINT_TO_POINTER(CB_STR_COL_INFO | 1));
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
@@ -5295,7 +5295,7 @@ srvsvc_dissect_netrservergetinfo_rqst(tvbuff_t *tvb, int offset,
offset = dissect_ndr_pointer_cb(
tvb, offset, pinfo, tree, drep,
dissect_ndr_wchar_cvstring, NDR_POINTER_UNIQUE,
- "Server", hf_srvsvc_server, cb_str_postprocess,
+ "Server", hf_srvsvc_server, cb_wstr_postprocess,
GINT_TO_POINTER(CB_STR_COL_INFO | 1));
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,