libwinpr-sspi: patch some memory leaks
authorMarc-André Moreau <marcandre.moreau@gmail.com>
Tue, 10 Jun 2014 12:40:04 +0000 (08:40 -0400)
committerMarc-André Moreau <marcandre.moreau@gmail.com>
Tue, 10 Jun 2014 12:40:04 +0000 (08:40 -0400)
winpr/libwinpr/sspi/NTLM/ntlm.c
winpr/libwinpr/sspi/sspi_winpr.c
winpr/libwinpr/sspi/test/TestNTLM.c

index 1fab586..0ba6d27 100644 (file)
@@ -62,6 +62,7 @@ int ntlm_SetContextWorkstation(NTLM_CONTEXT* context, char* Workstation)
 
        context->Workstation.Buffer = NULL;
        status = ConvertToUnicode(CP_UTF8, 0, ws, -1, &context->Workstation.Buffer, 0);
+       free(ws);
 
        if (status <= 0)
                return -1;
index 493bc83..4da7bab 100644 (file)
@@ -230,6 +230,10 @@ void sspi_CredentialsFree(SSPI_CREDENTIALS* credentials)
        if (!credentials)
                return;
 
+       free(credentials->identity.User);
+       free(credentials->identity.Domain);
+       free(credentials->identity.Password);
+
        free(credentials);
 }
 
index 1ab6936..db3d168 100644 (file)
@@ -95,6 +95,12 @@ void test_ntlm_client_uninit(TEST_NTLM_CLIENT* ntlm)
        if (!ntlm)
                return;
 
+       if (ntlm->outputBuffer[0].pvBuffer)
+       {
+               free(ntlm->outputBuffer[0].pvBuffer);
+               ntlm->outputBuffer[0].pvBuffer = NULL;
+       }
+
        free(ntlm->identity.User);
        free(ntlm->identity.Domain);
        free(ntlm->identity.Password);
@@ -344,6 +350,9 @@ void SEC_ENTRY test_ntlm_server_get_key(void* pArg, void* pPrincipal, ULONG KeyV
        fprintf(stderr, "SecGetKey %s\\%s status: %s (0x%04X)\n",
                                Domain, User, GetSecurityStatusString(status), status);
 
+       free(User);
+       free(Domain);
+
        *pStatus = status;
 }
 
@@ -403,6 +412,12 @@ void test_ntlm_server_uninit(TEST_NTLM_SERVER* ntlm)
        if (!ntlm)
                return;
 
+       if (ntlm->outputBuffer[0].pvBuffer)
+       {
+               free(ntlm->outputBuffer[0].pvBuffer);
+               ntlm->outputBuffer[0].pvBuffer = NULL;
+       }
+
        free(ntlm->identity.User);
        free(ntlm->identity.Domain);
        free(ntlm->identity.Password);