From: Marc-André Moreau Date: Fri, 22 Jul 2016 13:06:07 +0000 (-0400) Subject: freerdp: make modifications to NLA server-side fixes according to PR comments X-Git-Tag: 2.0.0-beta1+android10~172^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=14cb6d33c616674a61b3e18a71d065e6b1cc633b;p=platform%2Fupstream%2Ffreerdp.git freerdp: make modifications to NLA server-side fixes according to PR comments --- diff --git a/libfreerdp/core/nla.c b/libfreerdp/core/nla.c index 606c809..0d6b4b4 100644 --- a/libfreerdp/core/nla.c +++ b/libfreerdp/core/nla.c @@ -1747,8 +1747,17 @@ rdpNla* nla_new(freerdp* instance, rdpTransport* transport, rdpSettings* setting nla->version = 3; if (settings->NtlmSamFile) + { nla->SamFile = _strdup(settings->NtlmSamFile); + if (!nla->SamFile) + { + free(nla->identity); + free(nla); + return NULL; + } + } + ZeroMemory(&nla->negoToken, sizeof(SecBuffer)); ZeroMemory(&nla->pubKeyAuth, sizeof(SecBuffer)); ZeroMemory(&nla->authInfo, sizeof(SecBuffer)); @@ -1815,11 +1824,8 @@ void nla_free(rdpNla* nla) } } - if (nla->SamFile) - { - free(nla->SamFile); - nla->SamFile = NULL; - } + free(nla->SamFile); + nla->SamFile = NULL; sspi_SecBufferFree(&nla->PublicKey); sspi_SecBufferFree(&nla->tsCredentials); diff --git a/server/shadow/shadow_client.c b/server/shadow/shadow_client.c index 1cc23c9..8d433e2 100644 --- a/server/shadow/shadow_client.c +++ b/server/shadow/shadow_client.c @@ -408,6 +408,9 @@ BOOL shadow_client_logon(freerdp_peer* peer, SEC_WINNT_AUTH_IDENTITY* identity, password = _strdup((char*) identity->Password); } + if ((identity->User && !user) || (identity->Domain && !domain) || (identity->Password && !password)) + return FALSE; + if (user) { free(settings->Username); @@ -419,7 +422,7 @@ BOOL shadow_client_logon(freerdp_peer* peer, SEC_WINNT_AUTH_IDENTITY* identity, { free(settings->Domain); settings->Domain = domain; - user = NULL; + domain = NULL; } if (password) diff --git a/server/shadow/shadow_server.c b/server/shadow/shadow_server.c index d3dd1a0..ad5ebbe 100644 --- a/server/shadow/shadow_server.c +++ b/server/shadow/shadow_server.c @@ -784,17 +784,11 @@ void shadow_server_free(rdpShadowServer* server) if (!server) return; - if (server->ipcSocket) - { - free(server->ipcSocket); - server->ipcSocket = NULL; - } + free(server->ipcSocket); + server->ipcSocket = NULL; - if (server->settings) - { - freerdp_settings_free(server->settings); - server->settings = NULL; - } + freerdp_settings_free(server->settings); + server->settings = NULL; free(server); } diff --git a/winpr/libwinpr/sspi/NTLM/ntlm.c b/winpr/libwinpr/sspi/NTLM/ntlm.c index 32ff60a..0932697 100644 --- a/winpr/libwinpr/sspi/NTLM/ntlm.c +++ b/winpr/libwinpr/sspi/NTLM/ntlm.c @@ -810,7 +810,15 @@ SECURITY_STATUS SEC_ENTRY ntlm_SetContextAttributesW(PCtxtHandle phContext, ULON const char* filename = (char*) pBuffer; free(context->SamFile); - context->SamFile = filename ? _strdup(filename) : NULL; + context->SamFile = NULL; + + if (filename) + { + context->SamFile = _strdup(filename); + + if (!context->SamFile) + return SEC_E_INSUFFICIENT_MEMORY; + } return SEC_E_OK; }