mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
Fix usage of explicit server name when different from connection host
This commit is contained in:
@@ -326,7 +326,7 @@ BOOL rdp_client_connect(rdpRdp* rdp)
|
||||
settings->EncryptionMethods = ENCRYPTION_METHOD_FIPS;
|
||||
}
|
||||
|
||||
const char* hostname = freerdp_settings_get_server_name(settings);
|
||||
const char* hostname = settings->ServerHostname;
|
||||
if (!hostname)
|
||||
{
|
||||
WLog_ERR(TAG, "Missing hostname, can not connect to NULL target");
|
||||
|
||||
@@ -283,6 +283,7 @@ static BOOL transport_default_connect_tls(rdpTransport* transport)
|
||||
transport->layer = TRANSPORT_LAYER_TLS;
|
||||
|
||||
tls->hostname = settings->ServerHostname;
|
||||
tls->serverName = settings->UserSpecifiedServerName;
|
||||
tls->port = settings->ServerPort;
|
||||
|
||||
if (tls->port == 0)
|
||||
|
||||
@@ -599,6 +599,11 @@ static rdpCertificate* tls_get_certificate(rdpTls* tls, BOOL peer)
|
||||
return cert;
|
||||
}
|
||||
|
||||
static const char* tls_get_server_name(rdpTls* tls)
|
||||
{
|
||||
return tls->serverName ? tls->serverName : tls->hostname;
|
||||
}
|
||||
|
||||
#define TLS_SERVER_END_POINT "tls-server-end-point:"
|
||||
|
||||
static SecPkgContext_Bindings* tls_get_channel_bindings(const rdpCertificate* cert)
|
||||
@@ -832,7 +837,7 @@ TlsHandshakeResult freerdp_tls_connect_ex(rdpTls* tls, BIO* underlying, const SS
|
||||
return 0;
|
||||
|
||||
#if !defined(OPENSSL_NO_TLSEXT) && !defined(LIBRESSL_VERSION_NUMBER)
|
||||
SSL_set_tlsext_host_name(tls->ssl, tls->hostname);
|
||||
SSL_set_tlsext_host_name(tls->ssl, tls_get_server_name(tls));
|
||||
#endif
|
||||
|
||||
return freerdp_tls_handshake(tls);
|
||||
@@ -882,7 +887,7 @@ TlsHandshakeResult freerdp_tls_handshake(rdpTls* tls)
|
||||
|
||||
if (tls->isClientMode)
|
||||
{
|
||||
verify_status = tls_verify_certificate(tls, cert, tls->hostname, tls->port);
|
||||
verify_status = tls_verify_certificate(tls, cert, tls_get_server_name(tls), tls->port);
|
||||
|
||||
if (verify_status < 1)
|
||||
{
|
||||
|
||||
@@ -76,6 +76,7 @@ struct rdp_tls
|
||||
rdpCertificateStore* certificate_store;
|
||||
BIO* underlying;
|
||||
const char* hostname;
|
||||
const char* serverName;
|
||||
int port;
|
||||
int alertLevel;
|
||||
int alertDescription;
|
||||
|
||||
Reference in New Issue
Block a user