server: Don't read beyond the bounds of ServerInfo.ip and ServerInfo.ip6.
This commit is contained in:
parent
dc336d1a63
commit
5f1db61bdf
1 changed files with 3 additions and 3 deletions
|
@ -996,14 +996,14 @@ serv_connect_resolved(struct Client *client_p)
|
||||||
|
|
||||||
if(ServerConfVhosted(server_p))
|
if(ServerConfVhosted(server_p))
|
||||||
{
|
{
|
||||||
memcpy(&myipnum, &server_p->my_ipnum, sizeof(myipnum));
|
memcpy(&myipnum, &server_p->my_ipnum, sizeof(server_p->my_ipnum));
|
||||||
((struct sockaddr_in *)&myipnum)->sin_port = 0;
|
((struct sockaddr_in *)&myipnum)->sin_port = 0;
|
||||||
myipnum.ss_family = server_p->aftype;
|
myipnum.ss_family = server_p->aftype;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(server_p->aftype == AF_INET && ServerInfo.specific_ipv4_vhost)
|
else if(server_p->aftype == AF_INET && ServerInfo.specific_ipv4_vhost)
|
||||||
{
|
{
|
||||||
memcpy(&myipnum, &ServerInfo.ip, sizeof(myipnum));
|
memcpy(&myipnum, &ServerInfo.ip, sizeof(ServerInfo.ip));
|
||||||
((struct sockaddr_in *)&myipnum)->sin_port = 0;
|
((struct sockaddr_in *)&myipnum)->sin_port = 0;
|
||||||
myipnum.ss_family = AF_INET;
|
myipnum.ss_family = AF_INET;
|
||||||
SET_SS_LEN(&myipnum, sizeof(struct sockaddr_in));
|
SET_SS_LEN(&myipnum, sizeof(struct sockaddr_in));
|
||||||
|
@ -1012,7 +1012,7 @@ serv_connect_resolved(struct Client *client_p)
|
||||||
#ifdef RB_IPV6
|
#ifdef RB_IPV6
|
||||||
else if((server_p->aftype == AF_INET6) && ServerInfo.specific_ipv6_vhost)
|
else if((server_p->aftype == AF_INET6) && ServerInfo.specific_ipv6_vhost)
|
||||||
{
|
{
|
||||||
memcpy(&myipnum, &ServerInfo.ip6, sizeof(myipnum));
|
memcpy(&myipnum, &ServerInfo.ip6, sizeof(ServerInfo.ip6));
|
||||||
((struct sockaddr_in6 *)&myipnum)->sin6_port = 0;
|
((struct sockaddr_in6 *)&myipnum)->sin6_port = 0;
|
||||||
myipnum.ss_family = AF_INET6;
|
myipnum.ss_family = AF_INET6;
|
||||||
SET_SS_LEN(&myipnum, sizeof(struct sockaddr_in6));
|
SET_SS_LEN(&myipnum, sizeof(struct sockaddr_in6));
|
||||||
|
|
Loading…
Reference in a new issue