aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dcerpc-netlogon.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2011-12-16 03:54:46 +0000
committerRonnie Sahlberg <ronnie_sahlberg@ozemail.com.au>2011-12-16 03:54:46 +0000
commit4f052c3cd64ed171dd6140cff12604472bfee94c (patch)
tree5d19e2031f64b5fb56d66859214a88dd08347230 /epan/dissectors/packet-dcerpc-netlogon.c
parentbd83ae6dbb07e4bde7e93d492935bc6cfaf347a0 (diff)
PAC: S4U update, decode the full S4U Delegation Info blob with correct names
svn path=/trunk/; revision=40227
Diffstat (limited to 'epan/dissectors/packet-dcerpc-netlogon.c')
-rw-r--r--epan/dissectors/packet-dcerpc-netlogon.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/epan/dissectors/packet-dcerpc-netlogon.c b/epan/dissectors/packet-dcerpc-netlogon.c
index 6e4be73a08..944e6b0f6f 100644
--- a/epan/dissectors/packet-dcerpc-netlogon.c
+++ b/epan/dissectors/packet-dcerpc-netlogon.c
@@ -411,6 +411,8 @@ static int hf_netlogon_dc_flags_dns_domain_flag = -1;
static int hf_netlogon_dc_flags_dns_forest_flag = -1;
static int hf_netlogon_dnsdomaininfo = -1;
static int hf_netlogon_s4u2proxytarget = -1;
+static int hf_netlogon_transitedlistsize = -1;
+static int hf_netlogon_transited_service = -1;
static gint ett_nt_counted_longs_as_string = -1;
static gint ett_dcerpc_netlogon = -1;
@@ -2037,23 +2039,23 @@ netlogon_dissect_PAC_LOGON_INFO(tvbuff_t *tvb, int offset,
}
static int
-netlogon_dissect_S4U_DELEGATION_INFO_name(tvbuff_t *tvb, int offset,
+netlogon_dissect_S4U_Transited_Service_name(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree,
guint8 *drep)
{
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
- hf_netlogon_unknown_string, 0);
+ hf_netlogon_transited_service, 1);
return offset;
}
static int
-netlogon_dissect_S4U_DELEGATION_INFO_array(tvbuff_t *tvb, int offset,
+netlogon_dissect_S4U_Transited_Services_array(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree,
guint8 *drep)
{
offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
- netlogon_dissect_S4U_DELEGATION_INFO_name);
+ netlogon_dissect_S4U_Transited_Service_name);
return offset;
}
@@ -2067,11 +2069,11 @@ netlogon_dissect_PAC_S4U_DELEGATION_INFO(tvbuff_t *tvb, int offset,
hf_netlogon_s4u2proxytarget, 0);
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
- hf_netlogon_unknown_long, NULL);
+ hf_netlogon_transitedlistsize, NULL);
offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
- netlogon_dissect_S4U_DELEGATION_INFO_array, NDR_POINTER_UNIQUE,
- "names:", -1);
+ netlogon_dissect_S4U_Transited_Services_array, NDR_POINTER_UNIQUE,
+ "S4UTransitedServices", -1);
return offset;
}
@@ -9429,6 +9431,12 @@ proto_register_dcerpc_netlogon(void)
{ &hf_netlogon_s4u2proxytarget,
{ "S4U2proxyTarget", "netlogon.s4u2proxytarget", FT_STRING, BASE_NONE,
NULL, 0, "Target for constrained delegation using s4u2proxy", HFILL }},
+ { &hf_netlogon_transitedlistsize,
+ { "TransitedListSize", "netlogon.transited_list_size", FT_UINT32, BASE_HEX,
+ NULL, 0x0, "Number of elements in the TransitedServices array.", HFILL }},
+ { &hf_netlogon_transited_service,
+ { "Transited Service", "netlogon.transited_service", FT_STRING, BASE_NONE,
+ NULL, 0, "S4U2 Transited Service name", HFILL }},
};
static gint *ett[] = {