[CREDUI] Sync with Wine Staging 2.2. CORE-12823

848f478 credui: Split domain from username in SspiPromptForCredentialsW.

svn path=/trunk/; revision=73944
This commit is contained in:
Amine Khaldi 2017-02-26 17:09:21 +00:00
parent 69dc549fdb
commit 1e842f0e63
2 changed files with 29 additions and 7 deletions

View file

@ -911,23 +911,45 @@ ULONG SEC_ENTRY SspiPromptForCredentialsW( PCWSTR target, void *info,
if (!(ret = CredUIPromptForCredentialsW( cred_info, target, NULL, error, username,
len_username, password, len_password, save, flags )))
{
DWORD size = sizeof(*id);
WCHAR *ptr;
DWORD size = sizeof(*id), len_domain = 0;
WCHAR *ptr, *user = username, *domain = NULL;
len_username = strlenW( username );
if ((ptr = strchrW( username, '\\' )))
{
user = ptr + 1;
len_username = strlenW( user );
if (!strcmpiW( package, ntlmW ) || !strcmpiW( package, negotiateW ))
{
domain = username;
len_domain = ptr - username;
}
*ptr = 0;
}
else len_username = strlenW( username );
len_password = strlenW( password );
size += (len_username + 1) * sizeof(WCHAR);
size += (len_domain + 1) * sizeof(WCHAR);
size += (len_password + 1) * sizeof(WCHAR);
if (!(id = HeapAlloc( GetProcessHeap(), 0, size ))) return ERROR_OUTOFMEMORY;
ptr = (WCHAR *)(id + 1);
memcpy( ptr, username, (len_username + 1) * sizeof(WCHAR) );
memcpy( ptr, user, (len_username + 1) * sizeof(WCHAR) );
id->User = ptr;
id->UserLength = len_username;
ptr += len_username + 1;
id->Domain = NULL;
id->DomainLength = 0;
if (len_domain)
{
memcpy( ptr, domain, (len_domain + 1) * sizeof(WCHAR) );
id->Domain = ptr;
id->DomainLength = len_domain;
ptr += len_domain + 1;
}
else
{
id->Domain = NULL;
id->DomainLength = 0;
}
memcpy( ptr, password, (len_password + 1) * sizeof(WCHAR) );
id->Password = ptr;
id->PasswordLength = len_password;

View file

@ -57,7 +57,7 @@ reactos/dll/win32/comcat # Synced to WineStaging-1.9.11
reactos/dll/win32/comctl32 # Synced to WineStaging-1.9.23
reactos/dll/win32/comdlg32 # Synced to WineStaging-1.9.23
reactos/dll/win32/compstui # Synced to WineStaging-2.2
reactos/dll/win32/credui # Synced to WineStaging-1.9.16
reactos/dll/win32/credui # Synced to WineStaging-2.2
reactos/dll/win32/crypt32 # Synced to WineStaging-1.9.23
reactos/dll/win32/cryptdlg # Synced to WineStaging-1.9.11
reactos/dll/win32/cryptdll # Synced to WineStaging-1.9.11