Merge branch 'bc/maint-daemon-sans-ss-family'
* bc/maint-daemon-sans-ss-family: daemon.c: avoid accessing ss_family member of struct sockaddr_storage
This commit is contained in:
11
daemon.c
11
daemon.c
@ -590,14 +590,17 @@ static int execute(struct sockaddr *addr)
|
|||||||
static int addrcmp(const struct sockaddr_storage *s1,
|
static int addrcmp(const struct sockaddr_storage *s1,
|
||||||
const struct sockaddr_storage *s2)
|
const struct sockaddr_storage *s2)
|
||||||
{
|
{
|
||||||
if (s1->ss_family != s2->ss_family)
|
const struct sockaddr *sa1 = (const struct sockaddr*) s1;
|
||||||
return s1->ss_family - s2->ss_family;
|
const struct sockaddr *sa2 = (const struct sockaddr*) s2;
|
||||||
if (s1->ss_family == AF_INET)
|
|
||||||
|
if (sa1->sa_family != sa2->sa_family)
|
||||||
|
return sa1->sa_family - sa2->sa_family;
|
||||||
|
if (sa1->sa_family == AF_INET)
|
||||||
return memcmp(&((struct sockaddr_in *)s1)->sin_addr,
|
return memcmp(&((struct sockaddr_in *)s1)->sin_addr,
|
||||||
&((struct sockaddr_in *)s2)->sin_addr,
|
&((struct sockaddr_in *)s2)->sin_addr,
|
||||||
sizeof(struct in_addr));
|
sizeof(struct in_addr));
|
||||||
#ifndef NO_IPV6
|
#ifndef NO_IPV6
|
||||||
if (s1->ss_family == AF_INET6)
|
if (sa1->sa_family == AF_INET6)
|
||||||
return memcmp(&((struct sockaddr_in6 *)s1)->sin6_addr,
|
return memcmp(&((struct sockaddr_in6 *)s1)->sin6_addr,
|
||||||
&((struct sockaddr_in6 *)s2)->sin6_addr,
|
&((struct sockaddr_in6 *)s2)->sin6_addr,
|
||||||
sizeof(struct in6_addr));
|
sizeof(struct in6_addr));
|
||||||
|
Reference in New Issue
Block a user