diff options
author | Jukka Rissanen <jukka.rissanen@linux.intel.com> | 2013-06-12 11:02:56 +0300 |
---|---|---|
committer | Patrik Flykt <patrik.flykt@linux.intel.com> | 2013-06-12 15:53:41 +0300 |
commit | 5f5910b81a640032f3c1520ff5329c014cbc1827 (patch) | |
tree | 7a791191051a79a309c5f7f80957309867d58965 /src | |
parent | 58ec105e1501e57ee4e88ae59441210caebbc041 (diff) | |
download | connman-5f5910b81a640032f3c1520ff5329c014cbc1827.tar.gz connman-5f5910b81a640032f3c1520ff5329c014cbc1827.tar.bz2 connman-5f5910b81a640032f3c1520ff5329c014cbc1827.zip |
ippool: Private address check was incorrect
Fixes BMC#25993
Diffstat (limited to 'src')
-rw-r--r-- | src/ippool.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/src/ippool.c b/src/ippool.c index 52446cec..531745eb 100644 --- a/src/ippool.c +++ b/src/ippool.c @@ -223,21 +223,13 @@ static struct address_info *lookup_info(int index, uint32_t start) static connman_bool_t is_private_address(uint32_t address) { - uint32_t val; + unsigned int a, b; - if ((address & 0xff000000) == block_24_bits) - return TRUE; - - if ((address & 0xffff0000) == block_20_bits) { - val = (address & 0x00ff0000) >> 16; - - if (val < 16 || val > 31) - return FALSE; - - return TRUE; - } + a = (address & 0xff000000) >> 24; + b = (address & 0x00ff0000) >> 16; - if ((address & 0xffffff00) == block_16_bits) + if (a == 10 || (a == 192 && b == 168) || + (a == 172 && (b >= 16 && b <= 31))) return TRUE; return FALSE; |