aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/http_negotiate_sspi.c5
-rw-r--r--lib/warnless.c20
-rw-r--r--lib/warnless.h4
3 files changed, 25 insertions, 4 deletions
diff --git a/lib/http_negotiate_sspi.c b/lib/http_negotiate_sspi.c
index a63de7dc5..f1ab33d6d 100644
--- a/lib/http_negotiate_sspi.c
+++ b/lib/http_negotiate_sspi.c
@@ -29,6 +29,7 @@
#include "urldata.h"
#include "sendf.h"
#include "rawstr.h"
+#include "warnless.h"
#include "curl_base64.h"
#include "http_negotiate.h"
#include "curl_memory.h"
@@ -189,7 +190,7 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
out_buff_desc.cBuffers = 1;
out_buff_desc.pBuffers = &out_sec_buff;
- out_sec_buff.cbBuffer = neg_ctx->max_token_length;
+ out_sec_buff.cbBuffer = curlx_uztoul(neg_ctx->max_token_length);
out_sec_buff.BufferType = SECBUFFER_TOKEN;
out_sec_buff.pvBuffer = neg_ctx->output_token;
@@ -199,7 +200,7 @@ int Curl_input_negotiate(struct connectdata *conn, bool proxy,
in_buff_desc.cBuffers = 1;
in_buff_desc.pBuffers = &in_sec_buff;
- in_sec_buff.cbBuffer = input_token_len;
+ in_sec_buff.cbBuffer = curlx_uztoul(input_token_len);
in_sec_buff.BufferType = SECBUFFER_TOKEN;
in_sec_buff.pvBuffer = input_token;
}
diff --git a/lib/warnless.c b/lib/warnless.c
index 0f5fb5f4d..acdcb26ea 100644
--- a/lib/warnless.c
+++ b/lib/warnless.c
@@ -5,7 +5,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -175,6 +175,24 @@ int curlx_uztosi(size_t uznum)
}
/*
+** unsigned size_t to unsigned long
+*/
+
+unsigned long curlx_uztoul(size_t uznum)
+{
+#ifdef __INTEL_COMPILER
+# pragma warning(push)
+# pragma warning(disable:810) /* conversion may lose significant bits */
+#endif
+
+ return (unsigned long)(uznum & (size_t) CURL_MASK_ULONG);
+
+#ifdef __INTEL_COMPILER
+# pragma warning(pop)
+#endif
+}
+
+/*
** signed long to signed int
*/
diff --git a/lib/warnless.h b/lib/warnless.h
index 27cf57c31..9ba650f20 100644
--- a/lib/warnless.h
+++ b/lib/warnless.h
@@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@@ -28,6 +28,8 @@ unsigned char curlx_ultouc(unsigned long ulnum);
int curlx_uztosi(size_t uznum);
+unsigned long curlx_uztoul(size_t uznum);
+
int curlx_sltosi(long slnum);
unsigned int curlx_sltoui(long slnum);