mirror of https://github.com/FreeRDP/FreeRDP
Fixed issue with RDS farm redirection and passwords.
This commit is contained in:
parent
e11dd6d588
commit
927bc71780
|
@ -82,7 +82,7 @@ boolean rdp_client_connect(rdpRdp* rdp)
|
|||
|
||||
if ((selectedProtocol & PROTOCOL_TLS) || (selectedProtocol == PROTOCOL_RDP))
|
||||
{
|
||||
if ((settings->username != NULL) && (settings->password != NULL))
|
||||
if ((settings->username != NULL) && ((settings->password != NULL) || (settings->password_cookie->length > 0)))
|
||||
settings->autologon = true;
|
||||
}
|
||||
|
||||
|
@ -177,7 +177,7 @@ boolean rdp_client_redirect(rdpRdp* rdp)
|
|||
|
||||
if (redirection->flags & LB_PASSWORD)
|
||||
{
|
||||
freerdp_blob_free(&settings->password_cookie);
|
||||
freerdp_blob_free(settings->password_cookie);
|
||||
settings->password_cookie = redirection->password_cookie;
|
||||
}
|
||||
|
||||
|
|
|
@ -505,10 +505,11 @@ void rdp_write_info_packet(STREAM* s, rdpSettings* settings)
|
|||
userName = (uint8*)freerdp_uniconv_out(settings->uniconv, settings->username, &length);
|
||||
cbUserName = length;
|
||||
|
||||
if (settings->password_cookie != NULL)
|
||||
if (settings->password_cookie->length > 0)
|
||||
{
|
||||
password = (uint8*)settings->password_cookie->data;
|
||||
cbPassword = settings->password_cookie->length - 2;
|
||||
freerdp_hexdump(password, cbPassword);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -540,7 +541,7 @@ void rdp_write_info_packet(STREAM* s, rdpSettings* settings)
|
|||
stream_write_uint16(s, 0);
|
||||
|
||||
if (cbPassword > 0)
|
||||
stream_write(s, password, cbPassword);
|
||||
stream_write(s, password, cbPassword + 2);
|
||||
stream_write_uint16(s, 0);
|
||||
|
||||
if (cbAlternateShell > 0)
|
||||
|
|
|
@ -106,12 +106,14 @@ boolean rdp_recv_server_redirection_pdu(rdpRdp* rdp, STREAM* s)
|
|||
{
|
||||
uint32 passwordLength;
|
||||
stream_read_uint32(s, passwordLength);
|
||||
redirection->password_cookie = xnew(rdpBlob);
|
||||
freerdp_blob_alloc(redirection->password_cookie, passwordLength);
|
||||
stream_read(s, redirection->password_cookie->data, passwordLength);
|
||||
#ifdef WITH_DEBUG_REDIR
|
||||
DEBUG_REDIR("password_cookie:");
|
||||
|
||||
//#ifdef WITH_DEBUG_REDIR
|
||||
// DEBUG_REDIR("password_cookie:");
|
||||
freerdp_hexdump(redirection->password_cookie->data, redirection->password_cookie->length);
|
||||
#endif
|
||||
//#endif
|
||||
}
|
||||
|
||||
if (redirection->flags & LB_TARGET_FQDN)
|
||||
|
|
|
@ -171,7 +171,7 @@ rdpSettings* settings_new(void* instance)
|
|||
settings->server_auto_reconnect_cookie = xnew(ARC_SC_PRIVATE_PACKET);
|
||||
|
||||
settings->client_time_zone = xnew(TIME_ZONE_INFO);
|
||||
|
||||
settings->password_cookie = xnew(rdpBlob);
|
||||
settings->server_random = xnew(rdpBlob);
|
||||
settings->server_certificate = xnew(rdpBlob);
|
||||
}
|
||||
|
@ -187,6 +187,8 @@ void settings_free(rdpSettings* settings)
|
|||
xfree(settings->hostname);
|
||||
xfree(settings->username);
|
||||
xfree(settings->password);
|
||||
freerdp_blob_free(settings->password_cookie);
|
||||
xfree(settings->password_cookie);
|
||||
xfree(settings->domain);
|
||||
xfree(settings->shell);
|
||||
xfree(settings->directory);
|
||||
|
|
Loading…
Reference in New Issue