aboutsummaryrefslogtreecommitdiffstats
path: root/packet-dcerpc-spoolss.c
diff options
context:
space:
mode:
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2003-06-05 04:22:04 +0000
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>2003-06-05 04:22:04 +0000
commit2b7f3b7803c8ecc946eb82decfb02fda47a05617 (patch)
treef1f14bf51bf99c84561b99ad06527ba2e9d658a6 /packet-dcerpc-spoolss.c
parent29f2455ba96525354986707e9ac7ad689919db9a (diff)
In the policy handle hashing, handle more than one policy handle having
the same value, as an open might return handle XXX, handle XXX might then be closed, and a subsequent handle might return handle XXX, and we want to keep the two handles distinct to avoid, for example, displaying handles closed before they're opened. In policy handle open replies, store the handle name only if the operation succeeded. We can now do that without parsing the packet twice. Have "dissect_nt_policy_hnd()" optionally return, through a pointer, the protocol tree item for the handle, so that its caller can decorate the item with the name of the handle - that's done on opens, where we do that only if the operation succeeds. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@7787 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'packet-dcerpc-spoolss.c')
-rw-r--r--packet-dcerpc-spoolss.c219
1 files changed, 146 insertions, 73 deletions
diff --git a/packet-dcerpc-spoolss.c b/packet-dcerpc-spoolss.c
index 9c1192cb06..1e149d0fce 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.99 2003/05/27 07:18:47 guy Exp $
+ * $Id: packet-dcerpc-spoolss.c,v 1.100 2003/06/05 04:22:04 guy Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -544,10 +544,11 @@ static int SpoolssClosePrinter_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
FALSE, TRUE);
- dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL);
+ dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL,
+ pinfo->fd->num);
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
@@ -565,7 +566,8 @@ static int SpoolssClosePrinter_r(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL, FALSE, FALSE);
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
+ FALSE, FALSE);
offset = dissect_doserror(
@@ -674,7 +676,7 @@ static int SpoolssGetPrinterData_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
value_name = dcv->private_data;
@@ -750,7 +752,7 @@ static int SpoolssGetPrinterDataEx_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_cvstring(
@@ -852,7 +854,7 @@ static int SpoolssSetPrinterData_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_cvstring(
@@ -916,7 +918,7 @@ static int SpoolssSetPrinterDataEx_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_cvstring(
@@ -2555,19 +2557,17 @@ static int SpoolssOpenPrinterEx_r(tvbuff_t *tvb, int offset,
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
e_ctx_hnd policy_hnd;
+ proto_item *hnd_item;
guint32 status;
- int start_offset = offset;
- /* We need the value of the policy handle and status before we
- can retrieve the policy handle name. Then we can insert
- the policy handle with the name in the proto tree. */
+ /* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, NULL, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, &hnd_item,
TRUE, FALSE);
- offset = dissect_ndr_uint32(
- tvb, offset, pinfo, NULL, drep, hf_rc, &status);
+ offset = dissect_doserror(
+ tvb, offset, pinfo, tree, drep, hf_rc, &status);
if (status == 0) {
@@ -2580,24 +2580,33 @@ static int SpoolssOpenPrinterEx_r(tvbuff_t *tvb, int offset,
"OpenPrinterEx(%s)",
(char *)dcv->private_data);
- dcerpc_smb_store_pol_name(&policy_hnd, pol_name);
+ dcerpc_smb_store_pol_name(&policy_hnd, pinfo, pol_name);
g_free(pol_name);
g_free(dcv->private_data);
dcv->private_data = NULL;
}
- }
-
- /* Parse packet */
- offset = start_offset;
+ /*
+ * If we have a name for the handle, attach it to the item.
+ *
+ * XXX - we can't just do that above, as this may be called
+ * twice (see "dissect_pipe_dcerpc()", which calls the
+ * DCE RPC dissector twice), and in the first call we're
+ * not building a protocol tree (so we don't have an item
+ * to which to attach it) and in the second call
+ * "dcv->private_data" is NULL so we don't construct a
+ * name.
+ */
- offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
- TRUE, FALSE);
+ if (hnd_item != NULL) {
+ char *name;
- offset = dissect_doserror(
- tvb, offset, pinfo, tree, drep, hf_rc, &status);
+ if (dcerpc_smb_fetch_pol(&policy_hnd, &name, NULL, NULL,
+ pinfo->fd->num) && name != NULL)
+ proto_item_append_text(hnd_item, ": %s", name);
+ }
+ }
dcerpc_smb_check_long_frame(tvb, offset, pinfo, tree);
@@ -3003,7 +3012,8 @@ static int SpoolssRFFPCNEX_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL, FALSE, FALSE);
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
+ FALSE, FALSE);
offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep,
hf_rffpcnex_flags, &flags);
@@ -3198,26 +3208,56 @@ static int SpoolssReplyOpenPrinter_r(tvbuff_t *tvb, int offset,
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
e_ctx_hnd policy_hnd;
- char *pol_name;
+ proto_item *hnd_item;
+ guint32 status;
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, &hnd_item,
TRUE, FALSE);
- if (dcv->private_data)
- pol_name = g_strdup_printf(
- "ReplyOpenPrinter(%s)", (char *)dcv->private_data);
- else
- pol_name = g_strdup("ReplyOpenPrinter handle");
+ offset = dissect_doserror(
+ tvb, offset, pinfo, tree, drep, hf_rc, &status);
- dcerpc_smb_store_pol_name(&policy_hnd, pol_name);
+ if (status == 0) {
- g_free(pol_name);
+ /* Associate the returned printer handle with a name */
- offset = dissect_doserror(
- tvb, offset, pinfo, tree, drep, hf_rc, NULL);
+ if (dcv->private_data) {
+ char *pol_name;
+
+ pol_name = g_strdup_printf(
+ "OpenPrinter(%s)",
+ (char *)dcv->private_data);
+
+ dcerpc_smb_store_pol_name(&policy_hnd, pinfo, pol_name);
+
+ g_free(pol_name);
+ g_free(dcv->private_data);
+ dcv->private_data = NULL;
+ }
+
+ /*
+ * If we have a name for the handle, attach it to the item.
+ *
+ * XXX - we can't just do that above, as this may be called
+ * twice (see "dissect_pipe_dcerpc()", which calls the
+ * DCE RPC dissector twice), and in the first call we're
+ * not building a protocol tree (so we don't have an item
+ * to which to attach it) and in the second call
+ * "dcv->private_data" is NULL so we don't construct a
+ * name.
+ */
+
+ if (hnd_item != NULL) {
+ char *name;
+
+ if (dcerpc_smb_fetch_pol(&policy_hnd, &name, NULL, NULL,
+ pinfo->fd->num) && name != NULL)
+ proto_item_append_text(hnd_item, ": %s", name);
+ }
+ }
dcerpc_smb_check_long_frame(tvb, offset, pinfo, tree);
@@ -3240,7 +3280,7 @@ static int SpoolssGetPrinter_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_uint32(
@@ -3477,7 +3517,7 @@ static int SpoolssSetPrinter_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_uint32(
@@ -3596,7 +3636,7 @@ static int SpoolssEnumForms_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_uint32(
@@ -3678,7 +3718,7 @@ static int SpoolssDeletePrinter_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
dcerpc_smb_check_long_frame(tvb, offset, pinfo, tree);
@@ -3693,7 +3733,7 @@ static int SpoolssDeletePrinter_r(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_doserror(
@@ -3710,12 +3750,13 @@ static int SpoolssAddPrinterEx_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
dcerpc_info *di = (dcerpc_info *)pinfo->private_data;
dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data;
e_ctx_hnd policy_hnd;
+ proto_item *hnd_item;
guint32 status;
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, &hnd_item,
TRUE, FALSE);
offset = dissect_doserror(
@@ -3733,11 +3774,31 @@ static int SpoolssAddPrinterEx_r(tvbuff_t *tvb, int offset, packet_info *pinfo,
(char *)dcv->private_data);
dcerpc_smb_store_pol_name(
- &policy_hnd, dcv->private_data);
+ &policy_hnd, pinfo, dcv->private_data);
g_free(dcv->private_data);
dcv->private_data = NULL;
}
+
+ /*
+ * If we have a name for the handle, attach it to the item.
+ *
+ * XXX - we can't just do that above, as this may be called
+ * twice (see "dissect_pipe_dcerpc()", which calls the
+ * DCE RPC dissector twice), and in the first call we're
+ * not building a protocol tree (so we don't have an item
+ * to which to attach it) and in the second call
+ * "dcv->private_data" is NULL so we don't construct a
+ * name.
+ */
+
+ if (hnd_item != NULL) {
+ char *name;
+
+ if (dcerpc_smb_fetch_pol(&policy_hnd, &name, NULL, NULL,
+ pinfo->fd->num) && name != NULL)
+ proto_item_append_text(hnd_item, ": %s", name);
+ }
}
dcerpc_smb_check_long_frame(tvb, offset, pinfo, tree);
@@ -3768,7 +3829,7 @@ static int SpoolssEnumPrinterData_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_uint32(
@@ -4118,7 +4179,7 @@ static int SpoolssAddForm_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_uint32(
@@ -4169,7 +4230,7 @@ static int SpoolssDeleteForm_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_cvstring(
@@ -4218,7 +4279,7 @@ static int SpoolssSetForm_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_cvstring(
@@ -4277,7 +4338,7 @@ static int SpoolssGetForm_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_cvstring(
@@ -4582,7 +4643,7 @@ static int SpoolssEnumJobs_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
offset = dissect_nt_policy_hnd(
tvb, offset, pinfo, tree, drep,
- hf_hnd, NULL, FALSE, FALSE);
+ hf_hnd, NULL, NULL, FALSE, FALSE);
offset = dissect_ndr_uint32(
tvb, offset, pinfo, tree, drep, hf_enumjobs_firstjob, NULL);
@@ -4684,7 +4745,8 @@ static int SpoolssSetJob_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL, FALSE, FALSE);
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
+ FALSE, FALSE);
offset = dissect_ndr_uint32(
tvb, offset, pinfo, tree, drep, hf_job_id, &jobid);
@@ -4733,7 +4795,8 @@ static int SpoolssGetJob_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL, FALSE, FALSE);
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
+ FALSE, FALSE);
offset = dissect_ndr_uint32(
tvb, offset, pinfo, tree, drep, hf_job_id, &jobid);
@@ -4813,10 +4876,11 @@ static int SpoolssStartPagePrinter_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
FALSE, FALSE);
- dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL);
+ dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL,
+ pinfo->fd->num);
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
@@ -4855,10 +4919,11 @@ static int SpoolssEndPagePrinter_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
FALSE, FALSE);
- dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL);
+ dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL,
+ pinfo->fd->num);
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
@@ -5012,10 +5077,11 @@ static int SpoolssStartDocPrinter_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
FALSE, FALSE);
- dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL);
+ dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL,
+ pinfo->fd->num);
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
@@ -5059,10 +5125,11 @@ static int SpoolssEndDocPrinter_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
FALSE, FALSE);
- dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL);
+ dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL,
+ pinfo->fd->num);
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
@@ -5107,10 +5174,11 @@ static int SpoolssWritePrinter_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
FALSE, FALSE);
- dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL);
+ dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL,
+ pinfo->fd->num);
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
@@ -5178,7 +5246,7 @@ static int SpoolssDeletePrinterData_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_cvstring(
@@ -5418,10 +5486,11 @@ static int SpoolssGetPrinterDriver2_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd,
+ tvb, offset, pinfo, tree, drep, hf_hnd, &policy_hnd, NULL,
FALSE, FALSE);
- dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL);
+ dcerpc_smb_fetch_pol(&policy_hnd, &pol_name, NULL, NULL,
+ pinfo->fd->num);
if (check_col(pinfo->cinfo, COL_INFO) && pol_name)
col_append_fstr(pinfo->cinfo, COL_INFO, ", %s",
@@ -6027,7 +6096,7 @@ static int SpoolssRFNPCNEX_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_uint32(
@@ -6077,7 +6146,7 @@ static int SpoolssRRPCN_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_uint32(
@@ -6135,7 +6204,8 @@ static int SpoolssReplyClosePrinter_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL, FALSE, TRUE);
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
+ FALSE, TRUE);
dcerpc_smb_check_long_frame(tvb, offset, pinfo, tree);
@@ -6149,7 +6219,8 @@ static int SpoolssReplyClosePrinter_r(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL, FALSE, FALSE);
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
+ FALSE, FALSE);
offset = dissect_doserror(
tvb, offset, pinfo, tree, drep, hf_rc, NULL);
@@ -6169,7 +6240,8 @@ static int SpoolssFCPN_q(tvbuff_t *tvb, int offset, packet_info *pinfo,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL, FALSE, FALSE);
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
+ FALSE, FALSE);
dcerpc_smb_check_long_frame(tvb, offset, pinfo, tree);
@@ -6203,7 +6275,8 @@ static int SpoolssRouterReplyPrinter_q(tvbuff_t *tvb, int offset, packet_info *p
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL, FALSE, FALSE);
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
+ FALSE, FALSE);
offset = dissect_ndr_uint32(
tvb, offset, pinfo, tree, drep,
@@ -6281,7 +6354,7 @@ static int SpoolssEnumPrinterKey_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_cvstring(
@@ -6349,7 +6422,7 @@ static int SpoolssEnumPrinterDataEx_q(tvbuff_t *tvb, int offset,
/* Parse packet */
offset = dissect_nt_policy_hnd(
- tvb, offset, pinfo, tree, drep, hf_hnd, NULL,
+ tvb, offset, pinfo, tree, drep, hf_hnd, NULL, NULL,
FALSE, FALSE);
offset = dissect_ndr_cvstring(