From c382c550e7d8ad54d2c35b0fea9d0eef09ff3a25 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Tue, 14 Apr 2009 12:53:53 +0000 Subject: [PATCH] fix compiler warning: implicit conversion shortens 64-bit value into a 32-bit value --- ares/ares__get_hostent.c | 4 ++-- ares/ares_gethostbyaddr.c | 15 +++++++++++---- ares/ares_gethostbyname.c | 4 ++-- ares/ares_process.c | 4 ++-- lib/curl_addrinfo.c | 4 ++-- lib/netrc.c | 7 ++++--- lib/qssl.c | 6 ++++-- lib/ssluse.c | 17 +++++++++++++---- tests/libtest/lib543.c | 3 ++- 9 files changed, 42 insertions(+), 22 deletions(-) diff --git a/ares/ares__get_hostent.c b/ares/ares__get_hostent.c index c14919a97..90fd88f48 100644 --- a/ares/ares__get_hostent.c +++ b/ares/ares__get_hostent.c @@ -47,7 +47,7 @@ int ares__get_hostent(FILE *fp, int family, struct hostent **host) int status, linesize, end_at_hostname, naliases; struct in_addr addr; struct in6_addr addr6; - int addrlen = sizeof(struct in_addr); + size_t addrlen = sizeof(struct in_addr); struct hostent *hostent = NULL; while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS) @@ -162,7 +162,7 @@ int ares__get_hostent(FILE *fp, int family, struct hostent **host) hostent->h_aliases[naliases] = NULL; hostent->h_addrtype = family; - hostent->h_length = addrlen; + hostent->h_length = (int)addrlen; if (family == AF_INET) memcpy(hostent->h_addr_list[0], &addr, addrlen); else if (family == AF_INET6) diff --git a/ares/ares_gethostbyaddr.c b/ares/ares_gethostbyaddr.c index bab4b1c73..63abc85e4 100644 --- a/ares/ares_gethostbyaddr.c +++ b/ares/ares_gethostbyaddr.c @@ -145,16 +145,23 @@ static void addr_callback(void *arg, int status, int timeouts, { struct addr_query *aquery = (struct addr_query *) arg; struct hostent *host; + size_t addrlen; aquery->timeouts += timeouts; if (status == ARES_SUCCESS) { if (aquery->addr.family == AF_INET) - status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addrV4, - sizeof(struct in_addr), AF_INET, &host); + { + addrlen = sizeof(struct in_addr); + status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addrV4, + (int)addrlen, AF_INET, &host); + } else - status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addrV6, - sizeof(struct in6_addr), AF_INET6, &host); + { + addrlen = sizeof(struct in6_addr); + status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addrV6, + (int)addrlen, AF_INET6, &host); + } end_aquery(aquery, status, host); } else if (status == ARES_EDESTRUCTION) diff --git a/ares/ares_gethostbyname.c b/ares/ares_gethostbyname.c index 61fc59256..1ef25c7a5 100644 --- a/ares/ares_gethostbyname.c +++ b/ares/ares_gethostbyname.c @@ -275,12 +275,12 @@ static int fake_hostent(const char *name, int family, ares_host_callback callbac if (family == AF_INET) { - hostent.h_length = sizeof(struct in_addr); + hostent.h_length = (int)sizeof(struct in_addr); addrs[0] = (char *)∈ } else if (family == AF_INET6) { - hostent.h_length = sizeof(struct in6_addr); + hostent.h_length = (int)sizeof(struct in6_addr); addrs[0] = (char *)&in6; } /* Duplicate the name, to avoid a constness violation. */ diff --git a/ares/ares_process.c b/ares/ares_process.c index 3aa75cdae..e2d902fd1 100644 --- a/ares/ares_process.c +++ b/ares/ares_process.c @@ -1,7 +1,7 @@ /* $Id$ */ /* Copyright 1998 by the Massachusetts Institute of Technology. - * Copyright (C) 2004-2008 by Daniel Stenberg + * Copyright (C) 2004-2009 by Daniel Stenberg * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without @@ -104,7 +104,7 @@ static void end_query(ares_channel channel, struct query *query, int status, int ares__timedout(struct timeval *now, struct timeval *check) { - int secs = (now->tv_sec - check->tv_sec); + long secs = (now->tv_sec - check->tv_sec); if(secs > 0) return 1; /* yes, timed out */ diff --git a/lib/curl_addrinfo.c b/lib/curl_addrinfo.c index f75145722..19f73c48c 100644 --- a/lib/curl_addrinfo.c +++ b/lib/curl_addrinfo.c @@ -259,7 +259,7 @@ Curl_he2ai(const struct hostent *he, int port) for(i=0; (curr = he->h_addr_list[i]) != NULL; i++) { - int ss_size; + size_t ss_size; #ifdef ENABLE_IPV6 if (he->h_addrtype == AF_INET6) ss_size = sizeof (struct sockaddr_in6); @@ -297,7 +297,7 @@ Curl_he2ai(const struct hostent *he, int port) the type must be ignored and conn->socktype be used instead! */ ai->ai_socktype = SOCK_STREAM; - ai->ai_addrlen = ss_size; + ai->ai_addrlen = (int)ss_size; /* leave the rest of the struct filled with zero */ diff --git a/lib/netrc.c b/lib/netrc.c index 221d21506..4fefefc6e 100644 --- a/lib/netrc.c +++ b/lib/netrc.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2008, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2009, 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 @@ -144,8 +144,9 @@ int Curl_parsenetrc(const char *host, char *tok_buf; bool done=FALSE; char netrcbuffer[256]; - - while(!done && fgets(netrcbuffer, sizeof(netrcbuffer), file)) { + int netrcbuffsize = (int)sizeof(netrcbuffer); + + while(!done && fgets(netrcbuffer, netrcbuffsize, file)) { tok=strtok_r(netrcbuffer, " \t\n", &tok_buf); while(!done && tok) { diff --git a/lib/qssl.c b/lib/qssl.c index 2dd46c35c..bf4e5f798 100644 --- a/lib/qssl.c +++ b/lib/qssl.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2008, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2009, 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 @@ -419,9 +419,11 @@ ssize_t Curl_qsossl_recv(struct connectdata * conn, int num, char * buf, char error_buffer[120]; /* OpenSSL documents that this must be at least 120 bytes long. */ unsigned long sslerror; + int buffsize; int nread; - nread = SSL_Read(conn->ssl[num].handle, buf, (int) buffersize); + buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize; + nread = SSL_Read(conn->ssl[num].handle, buf, buffsize); *wouldblock = FALSE; if(nread < 0) { diff --git a/lib/ssluse.c b/lib/ssluse.c index 1617c8813..5d82691de 100644 --- a/lib/ssluse.c +++ b/lib/ssluse.c @@ -797,6 +797,7 @@ int Curl_ossl_shutdown(struct connectdata *conn, int sockindex) to be at least 120 bytes long. */ unsigned long sslerror; ssize_t nread; + int buffsize; int err; int done = 0; @@ -809,6 +810,7 @@ int Curl_ossl_shutdown(struct connectdata *conn, int sockindex) (void)SSL_shutdown(connssl->handle); if(connssl->handle) { + buffsize = (int)sizeof(buf); while(!done) { int what = Curl_socket_ready(conn->sock[sockindex], CURL_SOCKET_BAD, SSL_SHUTDOWN_TIMEOUT); @@ -816,7 +818,7 @@ int Curl_ossl_shutdown(struct connectdata *conn, int sockindex) /* Something to read, let's do it and hope that it is the close notify alert from the server */ nread = (ssize_t)SSL_read(conn->ssl[sockindex].handle, buf, - sizeof(buf)); + buffsize); err = SSL_get_error(conn->ssl[sockindex].handle, (int)nread); switch(err) { @@ -2374,7 +2376,11 @@ ssize_t Curl_ossl_send(struct connectdata *conn, char error_buffer[120]; /* OpenSSL documents that this must be at least 120 bytes long. */ unsigned long sslerror; - int rc = SSL_write(conn->ssl[sockindex].handle, mem, (int)len); + int memlen; + int rc; + + memlen = (len > (size_t)INT_MAX) ? INT_MAX : (int)len; + rc = SSL_write(conn->ssl[sockindex].handle, mem, memlen); if(rc < 0) { err = SSL_get_error(conn->ssl[sockindex].handle, rc); @@ -2419,8 +2425,11 @@ ssize_t Curl_ossl_recv(struct connectdata *conn, /* connection data */ char error_buffer[120]; /* OpenSSL documents that this must be at least 120 bytes long. */ unsigned long sslerror; - ssize_t nread = (ssize_t)SSL_read(conn->ssl[num].handle, buf, - (int)buffersize); + ssize_t nread; + int buffsize; + + buffsize = (buffersize > (size_t)INT_MAX) ? INT_MAX : (int)buffersize; + nread = (ssize_t)SSL_read(conn->ssl[num].handle, buf, buffsize); *wouldblock = FALSE; if(nread < 0) { /* failed SSL_read */ diff --git a/tests/libtest/lib543.c b/tests/libtest/lib543.c index 662883529..852645695 100644 --- a/tests/libtest/lib543.c +++ b/tests/libtest/lib543.c @@ -22,7 +22,8 @@ int test(char *URL) 0x1d, 0x57, 0xe1}; CURL* easy = curl_easy_init(); - char* s = curl_easy_escape(easy, (char*)a, sizeof(a)); + int asize = (int)sizeof(a); + char* s = curl_easy_escape(easy, (char*)a, asize); (void)URL; printf("%s\n", s);