@@ -85,11 +85,12 @@ struct addrinfo_sort_elem
8585#define ARES_IN6_IS_ADDR_6BONE (a ) \
8686 (((a)->s6_addr[0] == 0x3f) && ((a)->s6_addr[1] == 0xfe))
8787
88+
8889static int get_scope (const struct sockaddr * addr )
8990{
9091if (addr -> sa_family == AF_INET6 )
9192{
92- const struct sockaddr_in6 * addr6 = (const struct sockaddr_in6 * ) addr ;
93+ const struct sockaddr_in6 * addr6 = CARES_INADDR_CAST (const struct sockaddr_in6 * , addr ) ;
9394if (IN6_IS_ADDR_MULTICAST (& addr6 -> sin6_addr ))
9495{
9596return ARES_IPV6_ADDR_MC_SCOPE (& addr6 -> sin6_addr );
@@ -114,7 +115,7 @@ static int get_scope(const struct sockaddr *addr)
114115 }
115116else if (addr -> sa_family == AF_INET )
116117{
117- const struct sockaddr_in * addr4 = (const struct sockaddr_in * ) addr ;
118+ const struct sockaddr_in * addr4 = CARES_INADDR_CAST (const struct sockaddr_in * , addr ) ;
118119unsigned long int na = ntohl (addr4 -> sin_addr .s_addr );
119120if (ARES_IN_LOOPBACK (na ) || /* 127.0.0.0/8 */
120121 (na & 0xffff0000 ) == 0xa9fe0000 ) /* 169.254.0.0/16 */
@@ -149,7 +150,7 @@ static int get_label(const struct sockaddr *addr)
149150 }
150151else if (addr -> sa_family == AF_INET6 )
151152{
152- const struct sockaddr_in6 * addr6 = (const struct sockaddr_in6 * ) addr ;
153+ const struct sockaddr_in6 * addr6 = CARES_INADDR_CAST (const struct sockaddr_in6 * , addr ) ;
153154if (IN6_IS_ADDR_LOOPBACK (& addr6 -> sin6_addr ))
154155{
155156return 0 ;
@@ -210,7 +211,7 @@ static int get_precedence(const struct sockaddr *addr)
210211 }
211212else if (addr -> sa_family == AF_INET6 )
212213{
213- const struct sockaddr_in6 * addr6 = (const struct sockaddr_in6 * ) addr ;
214+ const struct sockaddr_in6 * addr6 = CARES_INADDR_CAST (const struct sockaddr_in6 * , addr ) ;
214215if (IN6_IS_ADDR_LOOPBACK (& addr6 -> sin6_addr ))
215216{
216217return 50 ;
@@ -353,10 +354,10 @@ static int rfc6724_compare(const void *ptr1, const void *ptr2)
353354{
354355const struct sockaddr_in6 * a1_src = & a1 -> src_addr .sa6 ;
355356const struct sockaddr_in6 * a1_dst =
356- (const struct sockaddr_in6 * ) a1 -> ai -> ai_addr ;
357+ CARES_INADDR_CAST (const struct sockaddr_in6 * , a1 -> ai -> ai_addr ) ;
357358const struct sockaddr_in6 * a2_src = & a2 -> src_addr .sa6 ;
358359const struct sockaddr_in6 * a2_dst =
359- (const struct sockaddr_in6 * ) a2 -> ai -> ai_addr ;
360+ CARES_INADDR_CAST (const struct sockaddr_in6 * , a2 -> ai -> ai_addr ) ;
360361prefixlen1 = common_prefix_len (& a1_src -> sin6_addr , & a1_dst -> sin6_addr );
361362prefixlen2 = common_prefix_len (& a2_src -> sin6_addr , & a2_dst -> sin6_addr );
362363if (prefixlen1 != prefixlen2 )
@@ -384,7 +385,7 @@ static int find_src_addr(ares_channel channel,
384385const struct sockaddr * addr ,
385386struct sockaddr * src_addr )
386387{
387- int sock ;
388+ ares_socket_t sock ;
388389int ret ;
389390ares_socklen_t len ;
390391
@@ -402,7 +403,7 @@ static int find_src_addr(ares_channel channel,
402403 }
403404
404405sock = ares__open_socket (channel , addr -> sa_family , SOCK_DGRAM , IPPROTO_UDP );
405- if (sock == -1 )
406+ if (sock == ARES_SOCKET_BAD )
406407{
407408if (errno == EAFNOSUPPORT )
408409{
@@ -426,7 +427,7 @@ static int find_src_addr(ares_channel channel,
426427return 0 ;
427428 }
428429
429- if (getsockname (sock , src_addr , & len ) == -1 )
430+ if (getsockname (sock , src_addr , & len ) != 0 )
430431{
431432ares__close_socket (channel , sock );
432433return -1 ;
@@ -491,4 +492,4 @@ int ares__sortaddrinfo(ares_channel channel, struct ares_addrinfo_node *list_sen
491492
492493ares_free (elems );
493494return ARES_SUCCESS ;
494- }
495+ }
0 commit comments