aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ares/ares__get_hostent.c4
-rw-r--r--ares/ares_gethostbyaddr.c15
-rw-r--r--ares/ares_gethostbyname.c4
-rw-r--r--ares/ares_process.c4
-rw-r--r--lib/curl_addrinfo.c4
-rw-r--r--lib/netrc.c7
-rw-r--r--lib/qssl.c6
-rw-r--r--lib/ssluse.c17
-rw-r--r--tests/libtest/lib543.c3
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, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2009, 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
@@ -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, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2009, 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
@@ -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);