Bug 924395 - Convert netmask for "ignore hosts" IPv6 address conversion in Gnome proxy settings. r=karlt

This commit is contained in:
Carsten Sommer 2013-10-16 08:27:59 -04:00
Родитель 93f44b676a
Коммит 07ab5213d1
1 изменённых файлов: 9 добавлений и 3 удалений

Просмотреть файл

@ -313,7 +313,7 @@ proxy_MaskIPv6Addr(PRIPv6Addr &addr, uint16_t mask_len)
}
static bool ConvertToIPV6Addr(const nsACString& aName,
PRIPv6Addr* aAddr)
PRIPv6Addr* aAddr, int32_t* aMask)
{
PRNetAddr addr;
// try to convert hostname to IP
@ -324,6 +324,12 @@ static bool ConvertToIPV6Addr(const nsACString& aName,
if (addr.raw.family == PR_AF_INET) {
// convert to IPv4-mapped address
PR_ConvertIPv4AddrToIPv6(addr.inet.ip, aAddr);
if (aMask) {
if (*aMask <= 32)
*aMask += 96;
else
return false;
}
} else if (addr.raw.family == PR_AF_INET6) {
// copy the address
memcpy(aAddr, &addr.ipv6.ip, sizeof(PRIPv6Addr));
@ -368,8 +374,8 @@ static bool HostIgnoredByProxy(const nsACString& aIgnore,
nsDependentCSubstring ignoreStripped(start, slash);
PRIPv6Addr ignoreAddr, hostAddr;
if (!ConvertToIPV6Addr(ignoreStripped, &ignoreAddr) ||
!ConvertToIPV6Addr(aHost, &hostAddr))
if (!ConvertToIPV6Addr(ignoreStripped, &ignoreAddr, &mask) ||
!ConvertToIPV6Addr(aHost, &hostAddr, NULL))
return false;
proxy_MaskIPv6Addr(ignoreAddr, mask);