Don't use pointer to a union member in host_create_from_string_and_family()
This commit is contained in:
@@ -362,7 +362,6 @@ host_t *host_create_from_string_and_family(char *string, int family,
|
|||||||
u_int16_t port)
|
u_int16_t port)
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
sockaddr_t sockaddr;
|
|
||||||
struct sockaddr_in v4;
|
struct sockaddr_in v4;
|
||||||
struct sockaddr_in6 v6;
|
struct sockaddr_in6 v6;
|
||||||
} addr;
|
} addr;
|
||||||
@@ -399,8 +398,8 @@ host_t *host_create_from_string_and_family(char *string, int family,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
addr.v6.sin6_port = htons(port);
|
addr.v6.sin6_port = htons(port);
|
||||||
addr.sockaddr.sa_family = AF_INET6;
|
addr.v6.sin6_family = AF_INET6;
|
||||||
return host_create_from_sockaddr(&addr.sockaddr);
|
return host_create_from_sockaddr((sockaddr_t*)&addr);
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
if (strchr(string, ':'))
|
if (strchr(string, ':'))
|
||||||
{ /* do not try to convert v6 addresses for v4 family */
|
{ /* do not try to convert v6 addresses for v4 family */
|
||||||
@@ -412,8 +411,8 @@ host_t *host_create_from_string_and_family(char *string, int family,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
addr.v4.sin_port = htons(port);
|
addr.v4.sin_port = htons(port);
|
||||||
addr.sockaddr.sa_family = AF_INET;
|
addr.v4.sin_family = AF_INET;
|
||||||
return host_create_from_sockaddr(&addr.sockaddr);
|
return host_create_from_sockaddr((sockaddr_t*)&addr);
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user