libfreerdp: core: deep copy ServerCertificate
authormingfang <mingfang@tencent.com>
Fri, 12 Feb 2021 02:27:24 +0000 (10:27 +0800)
committerakallabeth <akallabeth@users.noreply.github.com>
Thu, 25 Feb 2021 08:51:41 +0000 (09:51 +0100)
(cherry picked from commit b0783771055f55dccde85f8f5e50954ffca93383)

libfreerdp/core/settings.c

index d70b2e5..7bccdd0 100644 (file)
@@ -700,6 +700,17 @@ static BOOL freerdp_settings_int_buffer_copy(rdpSettings* _settings, const rdpSe
                _settings->ClientRandomLength = settings->ClientRandomLength;
        }
 
+       if (settings->ServerCertificateLength)
+       {
+               _settings->ServerCertificate = (BYTE*)malloc(settings->ServerCertificateLength);
+
+               if (!_settings->ServerCertificate)
+                       goto out_fail;
+
+               CopyMemory(_settings->ServerCertificate, settings->ServerCertificate, _settings->ServerCertificateLength);
+               _settings->ServerCertificateLength = settings->ServerCertificateLength;
+       }
+       
        if (settings->RdpServerCertificate)
        {
                _settings->RdpServerCertificate = certificate_clone(settings->RdpServerCertificate);