diff --git a/lib/connect.c b/lib/connect.c index 5747b0431..0affca288 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -95,7 +95,7 @@ static void tcpkeepalive(struct SessionHandle *data, int sockfd) { - int optval = data->set.tcp_keepalive; + int optval = data->set.tcp_keepalive?1:0; /* only set IDLE and INTVL if setting KEEPALIVE is successful */ if(setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, diff --git a/lib/ftp.c b/lib/ftp.c index 1308696fc..f2583d036 100644 --- a/lib/ftp.c +++ b/lib/ftp.c @@ -4244,7 +4244,8 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) return CURLE_OUT_OF_MEMORY; ftpc->dirs[0] = curl_easy_unescape(conn->data, slash_pos ? cur_pos : "/", - slash_pos?(int)(slash_pos-cur_pos):1, + slash_pos ? + curlx_sztosi(slash_pos-cur_pos) : 1, NULL); if(!ftpc->dirs[0]) { freedirs(ftpc); @@ -4283,7 +4284,7 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) /* we skip empty path components, like "x//y" since the FTP command CWD requires a parameter and a non-existent parameter a) doesn't work on many servers and b) has no effect on the others. */ - int len = (int)(slash_pos - cur_pos + absolute_dir); + int len = curlx_sztosi(slash_pos - cur_pos + absolute_dir); ftpc->dirs[ftpc->dirdepth] = curl_easy_unescape(conn->data, cur_pos - absolute_dir, len, NULL); if(!ftpc->dirs[ftpc->dirdepth]) { /* run out of memory ... */ @@ -4354,8 +4355,8 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) return CURLE_OUT_OF_MEMORY; } - dlen -= ftpc->file?(int)strlen(ftpc->file):0; - if((dlen == (int)strlen(ftpc->prevpath)) && + dlen -= ftpc->file?curlx_uztosi(strlen(ftpc->file)):0; + if((dlen == curlx_uztosi(strlen(ftpc->prevpath))) && strnequal(path, ftpc->prevpath, dlen)) { infof(data, "Request has same path as previous transfer\n"); ftpc->cwddone = TRUE; diff --git a/lib/ssluse.c b/lib/ssluse.c index c3d5ec4c7..d31c2e07b 100644 --- a/lib/ssluse.c +++ b/lib/ssluse.c @@ -67,6 +67,7 @@ #include #endif +#include "warnless.h" #include "curl_memory.h" #include "non-ascii.h" /* for Curl_convert_from_utf8 prototype */ @@ -254,7 +255,7 @@ static int ossl_seed(struct SessionHandle *data) if(!area) return 3; /* out of memory */ - len = (int)strlen(area); + len = curlx_uztosi(strlen(area)); RAND_add(area, len, (len >> 1)); free(area); /* now remove the random junk */ @@ -1252,7 +1253,7 @@ static CURLcode verifyhost(struct connectdata *conn, else /* not a UTF8 name */ j = ASN1_STRING_to_UTF8(&peer_CN, tmp); - if(peer_CN && ((int)strlen((char *)peer_CN) != j)) { + if(peer_CN && (curlx_uztosi(strlen((char *)peer_CN)) != j)) { /* there was a terminating zero before the end of string, this cannot match and we return failure! */ failf(data, "SSL: illegal cert name field"); diff --git a/lib/telnet.c b/lib/telnet.c index 0be795435..26fa3ac67 100644 --- a/lib/telnet.c +++ b/lib/telnet.c @@ -69,6 +69,7 @@ #include "select.h" #include "strequal.h" #include "rawstr.h" +#include "warnless.h" /* The last #include file should be: */ #include "memdebug.h" diff --git a/lib/url.c b/lib/url.c index 9660ce609..a78e27fb9 100644 --- a/lib/url.c +++ b/lib/url.c @@ -752,7 +752,7 @@ CURLcode Curl_init_userdefined(struct UserDefined *set) /* tcp keepalives are disabled by default, but provide reasonable values for * the interval and idle times. */ - set->tcp_keepalive = 0; + set->tcp_keepalive = FALSE; set->tcp_keepintvl = 60; set->tcp_keepidle = 60; diff --git a/lib/warnless.c b/lib/warnless.c index acdcb26ea..5fbc23400 100644 --- a/lib/warnless.c +++ b/lib/warnless.c @@ -286,6 +286,25 @@ size_t curlx_sotouz(curl_off_t sonum) #endif } +/* +** signed ssize_t to signed int +*/ + +int curlx_sztosi(ssize_t sznum) +{ +#ifdef __INTEL_COMPILER +# pragma warning(push) +# pragma warning(disable:810) /* conversion may lose significant bits */ +#endif + + DEBUGASSERT(sznum >= 0); + return (int)(sznum & (ssize_t) CURL_MASK_SINT); + +#ifdef __INTEL_COMPILER +# pragma warning(pop) +#endif +} + /* ** signed int to unsigned size_t */ diff --git a/lib/warnless.h b/lib/warnless.h index 9ba650f20..9f14e7865 100644 --- a/lib/warnless.h +++ b/lib/warnless.h @@ -40,6 +40,8 @@ ssize_t curlx_uztosz(size_t uznum); size_t curlx_sotouz(curl_off_t sonum); +int curlx_sztosi(ssize_t sznum); + size_t curlx_sitouz(int sinum); #if defined(__INTEL_COMPILER) && defined(__unix__) diff --git a/src/tool_setopt.c b/src/tool_setopt.c index 5be4c3b39..d9e200e5f 100644 --- a/src/tool_setopt.c +++ b/src/tool_setopt.c @@ -389,7 +389,7 @@ CURLcode tool_setopt(CURL *curl, bool str, struct Configurable *config, { va_list arg; char buf[256]; - const char *value; + const char *value = NULL; bool remark = FALSE; bool skip = FALSE; bool escape = FALSE;