aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Holme <steve_holme@hotmail.com>2014-08-07 20:07:46 +0100
committerSteve Holme <steve_holme@hotmail.com>2014-08-07 20:15:17 +0100
commit03d34b683d79dd42463fd26d5f0dd1d7cc192036 (patch)
tree5e2c74295999787b9c83184ce0b3875ad6754c3f
parentdc61480c541093b859c52f6993e9013b0f5993b0 (diff)
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.
-rw-r--r--lib/curl_ntlm_msgs.c10
1 files changed, 10 insertions, 0 deletions
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;