diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2003-05-21 10:06:29 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2003-05-21 10:06:29 +0000 |
commit | 8271c6a106335903b253f784f923d0fd0780a0ae (patch) | |
tree | c7d0833f81f5e5d9f4070f2b6e4c4812a59791f5 /packet-dcerpc-samr.c | |
parent | 1cedc6aab920fddaa0b8ba043fe61b27f9f9e30b (diff) |
Change the interface to dissect_ndr_nt_SID to take the extra parameter hf_sid
if the caller wants something else instead of "smb.sid"
svn path=/trunk/; revision=7707
Diffstat (limited to 'packet-dcerpc-samr.c')
-rw-r--r-- | packet-dcerpc-samr.c | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/packet-dcerpc-samr.c b/packet-dcerpc-samr.c index 578d119177..57bbdc5917 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.87 2003/05/21 09:34:54 sahlberg Exp $ + * $Id: packet-dcerpc-samr.c,v 1.88 2003/05/21 10:06:29 sahlberg Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@ethereal.com> @@ -473,7 +473,7 @@ struct access_mask_info samr_group_access_mask_info = { int dissect_ndr_nt_SID(tvbuff_t *tvb, int offset, packet_info *pinfo, - proto_tree *tree, char *drep) + proto_tree *tree, char *drep, int hf_sid) { dcerpc_info *di = (dcerpc_info *)pinfo->private_data; dcerpc_call_value *dcv = (dcerpc_call_value *)di->call_data; @@ -496,15 +496,20 @@ dissect_ndr_nt_SID(tvbuff_t *tvb, int offset, packet_info *pinfo, return offset; } - static int -dissect_ndr_nt_SID_ptr(tvbuff_t *tvb, int offset, - packet_info *pinfo, proto_tree *tree, - char *drep) +dissect_ndr_nt_SID_no_hf(tvbuff_t *tvb, int offset, packet_info *pinfo, + proto_tree *tree, char *drep) { - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - dissect_ndr_nt_SID, NDR_POINTER_UNIQUE, - "SID pointer", -1); + offset = dissect_ndr_nt_SID(tvb, offset, pinfo, tree, drep, -1); + return offset; +} +static int +dissect_ndr_nt_SID_hf_through_ptr(tvbuff_t *tvb, int offset, packet_info *pinfo, + proto_tree *tree, char *drep) +{ + dcerpc_info *di = (dcerpc_info *)pinfo->private_data; + + offset = dissect_ndr_nt_SID(tvb, offset, pinfo, tree, drep, di->hf_index); return offset; } @@ -1388,7 +1393,7 @@ samr_dissect_open_domain_rqst(tvbuff_t *tvb, int offset, &samr_domain_access_mask_info); offset = dissect_ndr_pointer_cb( - tvb, offset, pinfo, tree, drep, dissect_ndr_nt_SID, + tvb, offset, pinfo, tree, drep, dissect_ndr_nt_SID_no_hf, NDR_POINTER_REF, "SID:", -1, append_sid_col_info, NULL); return offset; @@ -1431,9 +1436,10 @@ samr_dissect_context_handle_SID(tvbuff_t *tvb, int offset, offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep, hf_samr_hnd, NULL, FALSE, FALSE); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - dissect_ndr_nt_SID, NDR_POINTER_REF, - "SID", -1, 0); + offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, + dissect_ndr_nt_SID_no_hf, NDR_POINTER_REF, + "SID pointer", -1); + return offset; } #endif @@ -2643,9 +2649,9 @@ samr_dissect_lookup_domain_reply(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, char *drep) { - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - dissect_ndr_nt_SID_ptr, NDR_POINTER_REF, - "SID:", -1); + offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, + dissect_ndr_nt_SID_no_hf, NDR_POINTER_UNIQUE, + "SID pointer", -1); offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep, hf_samr_rc, NULL); @@ -2667,9 +2673,9 @@ dissect_ndr_nt_PSID(tvbuff_t *tvb, int offset, tree = proto_item_add_subtree(item, ett_samr_sid_pointer); } - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - dissect_ndr_nt_SID, NDR_POINTER_UNIQUE, - "SID", -1); + offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, + dissect_ndr_nt_SID_hf_through_ptr, NDR_POINTER_UNIQUE, + "SID pointer", hf_sid); proto_item_set_len(item, offset-old_offset); return offset; @@ -4381,9 +4387,9 @@ samr_dissect_add_alias_member_rqst(tvbuff_t *tvb, int offset, offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep, hf_samr_hnd, NULL, FALSE, FALSE); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - dissect_ndr_nt_SID, NDR_POINTER_REF, - "SID:", -1); + offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, + dissect_ndr_nt_SID_no_hf, NDR_POINTER_REF, + "SID pointer", -1); return offset; } @@ -4407,9 +4413,10 @@ samr_dissect_remove_alias_member_rqst(tvbuff_t *tvb, int offset, offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep, hf_samr_hnd, NULL, FALSE, FALSE); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - dissect_ndr_nt_SID, NDR_POINTER_REF, - "SID:", -1); + offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, + dissect_ndr_nt_SID_no_hf, NDR_POINTER_REF, + "SID pointer", -1); + return offset; } @@ -4499,9 +4506,10 @@ samr_dissect_remove_member_from_foreign_domain_rqst(tvbuff_t *tvb, int offset, offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep, hf_samr_hnd, NULL, FALSE, FALSE); - offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, - dissect_ndr_nt_SID, NDR_POINTER_REF, - "SID:", -1); + offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep, + dissect_ndr_nt_SID_no_hf, NDR_POINTER_REF, + "SID pointer", -1); + return offset; } |