1
0
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:
Gerald Carter 2004-08-27 13:39:09 +00:00 committed by Gerald (Jerry) Carter
parent 69e87ef8c3
commit ed5fd7117e
3 changed files with 13 additions and 4 deletions

View File

@ -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

View File

@ -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);

View File

@ -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))) {