/* Ensure we have some login credientials as DigestSSP cannot use the current
Windows user like NTLMSSP can */
- if(!userp || !*userp)
+ if(!userp || !*userp) {
+ Curl_safefree(chlg);
return CURLE_LOGIN_DENIED;
+ }
/* Query the security package for DigestSSP */
status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT("WDigest"),
&SecurityPackage);
- if(status != SEC_E_OK)
+ if(status != SEC_E_OK) {
+ Curl_safefree(chlg);
return CURLE_NOT_BUILT_IN;
+ }
/* Calculate our SPN */
spn = aprintf("%s/%s", service, data->easy_conn->host);
result = Curl_create_sspi_identity(userp, passwdp, &identity);
if(result) {
Curl_safefree(spn);
+ Curl_safefree(chlg);
return result;
}
if(status != SEC_E_OK) {
Curl_sspi_free_identity(&identity);
Curl_safefree(spn);
+ Curl_safefree(chlg);
return CURLE_OUT_OF_MEMORY;
}
s_pSecFn->FreeCredentialsHandle(&handle);
Curl_sspi_free_identity(&identity);
Curl_safefree(spn);
+ Curl_safefree(chlg);
return CURLE_RECV_ERROR;
}
/* Free the SPN */
Curl_safefree(spn);
+ /* Free the decoeded challenge message */
+ Curl_safefree(chlg);
+
return result;
}