]> granicus.if.org Git - curl/commitdiff
ntlm: Added support for SSPI package info query
authorSteve Holme <steve_holme@hotmail.com>
Thu, 7 Aug 2014 19:07:46 +0000 (20:07 +0100)
committerSteve Holme <steve_holme@hotmail.com>
Thu, 7 Aug 2014 19:15:17 +0000 (20:15 +0100)
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.

lib/curl_ntlm_msgs.c

index 42bab2e598fe8f2d629d8cfcbd1f3da8f03e39e6..8d33e9d0b18106db0af2ac37f2951a6141ad0471 100644 (file)
@@ -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;