summaryrefslogtreecommitdiff
path: root/ares_getsock.c
diff options
context:
space:
mode:
Diffstat (limited to 'ares_getsock.c')
-rw-r--r--ares_getsock.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/ares_getsock.c b/ares_getsock.c
index 07d2854..22d3446 100644
--- a/ares_getsock.c
+++ b/ares_getsock.c
@@ -30,9 +30,7 @@ int ares_getsock(ares_channel channel,
/* Are there any active queries? */
int active_queries = !ares__is_list_empty(&(channel->all_queries));
- for (i = 0;
- (i < channel->nservers) && (sockindex < ARES_GETSOCK_MAXNUM);
- i++)
+ for (i = 0; i < channel->nservers; i++)
{
server = &channel->servers[i];
/* We only need to register interest in UDP sockets if we have
@@ -40,7 +38,7 @@ int ares_getsock(ares_channel channel,
*/
if (active_queries && server->udp_socket != ARES_SOCKET_BAD)
{
- if(sockindex >= numsocks)
+ if(sockindex >= numsocks || sockindex >= ARES_GETSOCK_MAXNUM)
break;
socks[sockindex] = server->udp_socket;
bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex);
@@ -52,7 +50,7 @@ int ares_getsock(ares_channel channel,
*/
if (server->tcp_socket != ARES_SOCKET_BAD)
{
- if(sockindex >= numsocks)
+ if(sockindex >= numsocks || sockindex >= ARES_GETSOCK_MAXNUM)
break;
socks[sockindex] = server->tcp_socket;
bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex);