mirror of
https://github.com/samba-team/samba.git
synced 2025-03-20 22:50:26 +03:00
auth/ntlmssp: use ndr_push_AV_PAIR_LIST in gensec_ntlmssp_server_negotiate().
Pair-Programmed-With: Stefan Metzmacher <metze@samba.org> Signed-off-by: Günther Deschner <gd@samba.org> BUG: https://bugzilla.samba.org/show_bug.cgi?id=11804 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org> (cherry picked from commit f6b9e1feab8d435b1e44fef81e867c01ed01db95)
This commit is contained in:
parent
3136ede9e6
commit
192d5bebff
@ -82,6 +82,7 @@ struct ntlmssp_state
|
||||
const char *netbios_domain;
|
||||
const char *dns_name;
|
||||
const char *dns_domain;
|
||||
struct AV_PAIR_LIST av_pair_list;
|
||||
} server;
|
||||
|
||||
DATA_BLOB internal_chal; /* Random challenge as supplied to the client for NTLM authentication */
|
||||
|
@ -150,16 +150,39 @@ NTSTATUS gensec_ntlmssp_server_negotiate(struct gensec_security *gensec_security
|
||||
cryptkey, 8);
|
||||
|
||||
/* This creates the 'blob' of names that appears at the end of the packet */
|
||||
if (chal_flags & NTLMSSP_NEGOTIATE_TARGET_INFO)
|
||||
{
|
||||
status = msrpc_gen(ntlmssp_state, &struct_blob, "aaaaa",
|
||||
MsvAvNbDomainName, target_name,
|
||||
MsvAvNbComputerName, ntlmssp_state->server.netbios_name,
|
||||
MsvAvDnsDomainName, ntlmssp_state->server.dns_domain,
|
||||
MsvAvDnsComputerName, ntlmssp_state->server.dns_name,
|
||||
MsvAvEOL, "");
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
return status;
|
||||
if (chal_flags & NTLMSSP_NEGOTIATE_TARGET_INFO) {
|
||||
enum ndr_err_code err;
|
||||
struct AV_PAIR *pairs = NULL;
|
||||
uint32_t count = 5;
|
||||
|
||||
pairs = talloc_zero_array(ntlmssp_state, struct AV_PAIR, count);
|
||||
if (pairs == NULL) {
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
|
||||
pairs[0].AvId = MsvAvNbDomainName;
|
||||
pairs[0].Value.AvNbDomainName = target_name;
|
||||
|
||||
pairs[1].AvId = MsvAvNbComputerName;
|
||||
pairs[1].Value.AvNbComputerName = ntlmssp_state->server.netbios_name;
|
||||
|
||||
pairs[2].AvId = MsvAvDnsDomainName;
|
||||
pairs[2].Value.AvDnsDomainName = ntlmssp_state->server.dns_domain;
|
||||
|
||||
pairs[3].AvId = MsvAvDnsComputerName;
|
||||
pairs[3].Value.AvDnsComputerName= ntlmssp_state->server.dns_name;
|
||||
|
||||
pairs[4].AvId = MsvAvEOL;
|
||||
|
||||
ntlmssp_state->server.av_pair_list.count = count;
|
||||
ntlmssp_state->server.av_pair_list.pair = pairs;
|
||||
|
||||
err = ndr_push_struct_blob(&struct_blob,
|
||||
ntlmssp_state,
|
||||
&ntlmssp_state->server.av_pair_list,
|
||||
(ndr_push_flags_fn_t)ndr_push_AV_PAIR_LIST);
|
||||
if (!NDR_ERR_CODE_IS_SUCCESS(err)) {
|
||||
return NT_STATUS_NO_MEMORY;
|
||||
}
|
||||
} else {
|
||||
struct_blob = data_blob_null;
|
||||
|
Loading…
x
Reference in New Issue
Block a user