From 8e82ef9c324c12096f722801518178d0c92e9f80 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Fri, 13 Jan 2012 13:34:43 +0100 Subject: http_negotiate_sspi.c: fix compiler warning --- lib/http_negotiate_sspi.c | 5 +++-- lib/warnless.c | 20 +++++++++++++++++++- lib/warnless.h | 4 +++- 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, , et al. + * Copyright (C) 1998 - 2012, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -174,6 +174,24 @@ int curlx_uztosi(size_t uznum) #endif } +/* +** 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, , et al. + * Copyright (C) 1998 - 2012, Daniel Stenberg, , 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); -- cgit v1.2.3