mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
r2086: fix bug with winbindd_getpwnam() caused by Microsoft DC's not filling in the username in the user_info3
(This used to be commit 4703a71fa8
)
This commit is contained in:
parent
69e87ef8c3
commit
ed5fd7117e
@ -205,7 +205,7 @@ static NTSTATUS domain_client_validate(TALLOC_CTX *mem_ctx,
|
||||
} else {
|
||||
nt_status = make_server_info_info3(mem_ctx, user_info->internal_username.str,
|
||||
user_info->smb_name.str, domain, server_info, &info3);
|
||||
netsamlogon_cache_store( mem_ctx, &info3 );
|
||||
netsamlogon_cache_store( mem_ctx, user_info->smb_name.str, &info3 );
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
@ -106,9 +106,10 @@ void netsamlogon_clear_cached_user(TDB_CONTEXT *tdb, NET_USER_INFO_3 *user)
|
||||
|
||||
/***********************************************************************
|
||||
Store a NET_USER_INFO_3 structure in a tdb for later user
|
||||
username should be in UTF-8 format
|
||||
***********************************************************************/
|
||||
|
||||
BOOL netsamlogon_cache_store(TALLOC_CTX *mem_ctx, NET_USER_INFO_3 *user)
|
||||
BOOL netsamlogon_cache_store(TALLOC_CTX *mem_ctx, const char * username, NET_USER_INFO_3 *user)
|
||||
{
|
||||
TDB_DATA data;
|
||||
fstring keystr;
|
||||
@ -131,6 +132,14 @@ BOOL netsamlogon_cache_store(TALLOC_CTX *mem_ctx, NET_USER_INFO_3 *user)
|
||||
|
||||
DEBUG(10,("netsamlogon_cache_store: SID [%s]\n", keystr));
|
||||
|
||||
/* only Samba fills in the username, not sure why NT doesn't */
|
||||
/* so we fill it in since winbindd_getpwnam() makes use of it */
|
||||
|
||||
if ( !user->uni_user_name.buffer ) {
|
||||
init_unistr2( &user->uni_user_name, username, STR_TERMINATE );
|
||||
init_uni_hdr( &user->hdr_user_name, &user->uni_user_name );
|
||||
}
|
||||
|
||||
/* Prepare data */
|
||||
|
||||
prs_init( &ps,MAX_PDU_FRAG_LEN , mem_ctx, MARSHALL);
|
||||
|
@ -283,7 +283,7 @@ enum winbindd_result winbindd_pam_auth(struct winbindd_cli_state *state)
|
||||
}
|
||||
|
||||
if (NT_STATUS_IS_OK(result)) {
|
||||
netsamlogon_cache_store( cli->mem_ctx, &info3 );
|
||||
netsamlogon_cache_store( cli->mem_ctx, name_user, &info3 );
|
||||
wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3);
|
||||
|
||||
/* Check if the user is in the right group */
|
||||
@ -538,7 +538,7 @@ enum winbindd_result winbindd_pam_auth_crap(struct winbindd_cli_state *state)
|
||||
}
|
||||
|
||||
if (NT_STATUS_IS_OK(result)) {
|
||||
netsamlogon_cache_store( cli->mem_ctx, &info3 );
|
||||
netsamlogon_cache_store( cli->mem_ctx, name_user, &info3 );
|
||||
wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3);
|
||||
|
||||
if (!NT_STATUS_IS_OK(result = check_info3_in_group(mem_ctx, &info3, state->request.data.auth_crap.required_membership_sid))) {
|
||||
|
Loading…
Reference in New Issue
Block a user