core/connection: use redirection password when reconnecting

According to MS-RDPBCGR the server might send a password in the Redirection PDU
that then must be sent by the client to the server as password.

Since the field either contains a password string (unicode) or a binary cookie,
we try to convert the password from unicode and use it only if conversion
succeeds.
This commit is contained in:
KOVACS Krisztian 2017-11-07 16:06:01 +01:00
parent 5189814930
commit 70c65e70d1

View File

@ -366,6 +366,22 @@ BOOL rdp_client_redirect(rdpRdp* rdp)
return FALSE; return FALSE;
} }
if (settings->RedirectionFlags & LB_PASSWORD)
{
char *password = NULL;
/* If unicode conversion fails, this might be because the Password field
* might contain a non-unicode cookie value. Simply ignore in this case. */
if (ConvertFromUnicode(CP_UTF8, 0,
(WCHAR*) settings->RedirectionPassword, settings->RedirectionPasswordLength,
&password, 0,
NULL, NULL) > 0)
{
free(settings->Password);
settings->Password = password;
}
}
status = rdp_client_connect(rdp); status = rdp_client_connect(rdp);
return status; return status;