select: make Curl_socket_check take timediff_t timeout
Coverity found CID 1461718: Integer handling issues (CONSTANT_EXPRESSION_RESULT) "timeout_ms > 9223372036854775807L" is always false regardless of the values of its operands. This occurs as the logical second operand of "||". Closes #5240
This commit is contained in:
parent
b1b9692614
commit
a96c7529eb
@ -147,8 +147,8 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
|
|||||||
result = CURLE_OPERATION_TIMEDOUT;
|
result = CURLE_OPERATION_TIMEDOUT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(!timeout_ms || timeout_ms > TIME_T_MAX)
|
if(!timeout_ms)
|
||||||
timeout_ms = TIME_T_MAX;
|
timeout_ms = TIMEDIFF_T_MAX;
|
||||||
|
|
||||||
/* Don't busyloop. The entire loop thing is a work-around as it causes a
|
/* Don't busyloop. The entire loop thing is a work-around as it causes a
|
||||||
BLOCKING behavior which is a NO-NO. This function should rather be
|
BLOCKING behavior which is a NO-NO. This function should rather be
|
||||||
@ -156,7 +156,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
|
|||||||
possible to send now will be sent in the doing function repeatedly
|
possible to send now will be sent in the doing function repeatedly
|
||||||
until the entire request is sent.
|
until the entire request is sent.
|
||||||
*/
|
*/
|
||||||
what = SOCKET_WRITABLE(sockfd, (time_t)timeout_ms);
|
what = SOCKET_WRITABLE(sockfd, timeout_ms);
|
||||||
if(what < 0) {
|
if(what < 0) {
|
||||||
result = CURLE_SEND_ERROR;
|
result = CURLE_SEND_ERROR;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -201,7 +201,7 @@ int Curl_select(curl_socket_t maxfd,
|
|||||||
int Curl_socket_check(curl_socket_t readfd0, /* two sockets to read from */
|
int Curl_socket_check(curl_socket_t readfd0, /* two sockets to read from */
|
||||||
curl_socket_t readfd1,
|
curl_socket_t readfd1,
|
||||||
curl_socket_t writefd, /* socket to write to */
|
curl_socket_t writefd, /* socket to write to */
|
||||||
time_t timeout_ms) /* milliseconds to wait */
|
timediff_t timeout_ms) /* milliseconds to wait */
|
||||||
{
|
{
|
||||||
#ifdef HAVE_POLL_FINE
|
#ifdef HAVE_POLL_FINE
|
||||||
struct pollfd pfd[3];
|
struct pollfd pfd[3];
|
||||||
@ -333,7 +333,7 @@ int Curl_socket_check(curl_socket_t readfd0, /* two sockets to read from */
|
|||||||
curl_socket_t is unsigned in such cases and thus -1 is the largest
|
curl_socket_t is unsigned in such cases and thus -1 is the largest
|
||||||
value).
|
value).
|
||||||
*/
|
*/
|
||||||
r = Curl_select(maxfd, &fds_read, &fds_write, &fds_err, timeout_ms);
|
r = Curl_select(maxfd, &fds_read, &fds_write, &fds_err, (time_t)timeout_ms);
|
||||||
|
|
||||||
if(r < 0)
|
if(r < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@ -80,7 +80,7 @@ int Curl_select(curl_socket_t maxfd,
|
|||||||
|
|
||||||
int Curl_socket_check(curl_socket_t readfd, curl_socket_t readfd2,
|
int Curl_socket_check(curl_socket_t readfd, curl_socket_t readfd2,
|
||||||
curl_socket_t writefd,
|
curl_socket_t writefd,
|
||||||
time_t timeout_ms);
|
timediff_t timeout_ms);
|
||||||
#define SOCKET_READABLE(x,z) \
|
#define SOCKET_READABLE(x,z) \
|
||||||
Curl_socket_check(x, CURL_SOCKET_BAD, CURL_SOCKET_BAD, z)
|
Curl_socket_check(x, CURL_SOCKET_BAD, CURL_SOCKET_BAD, z)
|
||||||
#define SOCKET_WRITABLE(x,z) \
|
#define SOCKET_WRITABLE(x,z) \
|
||||||
|
|||||||
@ -68,9 +68,9 @@ int Curl_blockread_all(struct connectdata *conn, /* connection data */
|
|||||||
result = CURLE_OPERATION_TIMEDOUT;
|
result = CURLE_OPERATION_TIMEDOUT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(!timeout_ms || timeout_ms > TIME_T_MAX)
|
if(!timeout_ms)
|
||||||
timeout_ms = TIME_T_MAX;
|
timeout_ms = TIME_T_MAX;
|
||||||
if(SOCKET_READABLE(sockfd, (time_t)timeout_ms) <= 0) {
|
if(SOCKET_READABLE(sockfd, timeout_ms) <= 0) {
|
||||||
result = ~CURLE_OK;
|
result = ~CURLE_OK;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1645,9 +1645,9 @@ schannel_send(struct connectdata *conn, int sockindex,
|
|||||||
written = -1;
|
written = -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(!timeout_ms || timeout_ms > TIME_T_MAX)
|
if(!timeout_ms)
|
||||||
timeout_ms = TIME_T_MAX;
|
timeout_ms = TIMEDIFF_T_MAX;
|
||||||
what = SOCKET_WRITABLE(conn->sock[sockindex], (time_t)timeout_ms);
|
what = SOCKET_WRITABLE(conn->sock[sockindex], timeout_ms);
|
||||||
if(what < 0) {
|
if(what < 0) {
|
||||||
/* fatal error */
|
/* fatal error */
|
||||||
failf(conn->data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
|
failf(conn->data, "select/poll on SSL socket, errno: %d", SOCKERRNO);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user