mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +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 {
|
} else {
|
||||||
nt_status = make_server_info_info3(mem_ctx, user_info->internal_username.str,
|
nt_status = make_server_info_info3(mem_ctx, user_info->internal_username.str,
|
||||||
user_info->smb_name.str, domain, server_info, &info3);
|
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
|
#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
|
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;
|
TDB_DATA data;
|
||||||
fstring keystr;
|
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));
|
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 */
|
/* Prepare data */
|
||||||
|
|
||||||
prs_init( &ps,MAX_PDU_FRAG_LEN , mem_ctx, MARSHALL);
|
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)) {
|
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);
|
wcache_invalidate_samlogon(find_domain_from_name(name_domain), &info3);
|
||||||
|
|
||||||
/* Check if the user is in the right group */
|
/* 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)) {
|
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);
|
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))) {
|
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