From: Steve Holme Date: Thu, 7 Aug 2014 19:07:46 +0000 (+0100) Subject: ntlm: Added support for SSPI package info query X-Git-Tag: curl-7_38_0~129 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=03d34b683d79dd42463fd26d5f0dd1d7cc192036;p=curl ntlm: Added support for SSPI package info query Just as with the SSPI implementations of Digest and Negotiate added a package info query so that libcurl can a) return a more appropriate error code when the NTLM package is not supported and b) it can be of use later to allocate a dynamic buffer for the Type-1 and Type-3 output tokens rather than use a fixed buffer of 1024 bytes. --- diff --git a/lib/curl_ntlm_msgs.c b/lib/curl_ntlm_msgs.c index 42bab2e59..8d33e9d0b 100644 --- a/lib/curl_ntlm_msgs.c +++ b/lib/curl_ntlm_msgs.c @@ -414,6 +414,7 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp, #ifdef USE_WINDOWS_SSPI + PSecPkgInfo SecurityPackage; SecBuffer type_1_buf; SecBufferDesc type_1_desc; SECURITY_STATUS status; @@ -422,6 +423,15 @@ CURLcode Curl_ntlm_create_type1_message(const char *userp, Curl_ntlm_sspi_cleanup(ntlm); + /* Query the security package for NTLM */ + status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT("NTLM"), + &SecurityPackage); + if(status != SEC_E_OK) + return CURLE_NOT_BUILT_IN; + + /* Release the package buffer as it is not required anymore */ + s_pSecFn->FreeContextBuffer(SecurityPackage); + if(userp && *userp) { CURLcode result;