Commit 82fdb87b authored by Steve Holme's avatar Steve Holme
Browse files

ntlm: Disable NTLM v2 when 64-bit integers are not supported

This fixes compilation issues with compilers that don't support 64-bit
integers through long long or __int64 which was introduced in commit
07b66cbf.
parent 97e90d7b
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -472,6 +472,7 @@ static void write32_le(const int value, unsigned char *buffer)
  buffer[3] = (char)((value & 0xFF000000) >> 24);
}

#if (CURL_SIZEOF_CURL_OFF_T > 4)
#if defined(HAVE_LONGLONG)
static void write64_le(const long long value, unsigned char *buffer)
#else
@@ -481,6 +482,7 @@ static void write64_le(const __int64 value, unsigned char *buffer)
  write32_le((int)value, buffer);
  write32_le((int)(value >> 32), buffer + 4);
}
#endif

/*
 * Set up nt hashed passwords
@@ -550,7 +552,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
  return CURLE_OK;
}

#ifndef USE_WINDOWS_SSPI
#if USE_NTLM_V2 && !defined(USE_WINDOWS_SSPI)

/* This returns the HMAC MD5 digest */
CURLcode Curl_hmac_md5(const unsigned char *key, unsigned int keylen,
+10 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#  ifdef OPENSSL_NO_MD4
#    define USE_NTRESPONSES 0
#    define USE_NTLM2SESSION 0
#    define USE_NTLM_V2 0
#  endif
#endif

@@ -52,6 +53,13 @@
#define USE_NTLM2SESSION 1
#endif

/* Define USE_NTLM_V2 to 1 in order to allow the type-3 message to include the
   LMv2 and NTLMv2 response messages, requires USE_NTRESPONSES defined to 1
   and support for 64-bit integers. */
#if !defined(USE_NTLM_V2) && USE_NTRESPONSES && (CURL_SIZEOF_CURL_OFF_T > 4)
#define USE_NTLM_V2 1
#endif

void Curl_ntlm_core_lm_resp(const unsigned char *keys,
                            const unsigned char *plaintext,
                            unsigned char *results);
@@ -65,7 +73,7 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data,
                                   const char *password,
                                   unsigned char *ntbuffer /* 21 bytes */);

#ifndef USE_WINDOWS_SSPI
#if USE_NTLM_V2 && !defined(USE_WINDOWS_SSPI)

CURLcode Curl_hmac_md5(const unsigned char *key, unsigned int keylen,
                       const unsigned char *data, unsigned int datalen,
@@ -87,7 +95,7 @@ CURLcode Curl_ntlm_core_mk_lmv2_resp(unsigned char *ntlmv2hash,
                                      unsigned char *challenge_server,
                                      unsigned char *lmresp);

#endif /* !USE_WINDOWS_SSPI */
#endif /* USE_NTLM_V2 && !USE_WINDOWS_SSPI */

#endif /* USE_NTRESPONSES */

+1 −1
Original line number Diff line number Diff line
@@ -554,7 +554,7 @@ CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data,
    hostlen = strlen(host);
  }

#if USE_NTRESPONSES
#if USE_NTRESPONSES && USE_NTLM_V2
  if(ntlm->target_info_len) {
    unsigned char ntbuffer[0x18];
    unsigned int entropy[2];