diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2014-07-19 14:42:47 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2014-07-19 14:42:51 +0200 |
commit | 8dd290b85ee8d57026581891e9a34945d077fa3b (patch) | |
tree | b99d74b329517203d37e33c4d913f4f8e7fe3aec | |
parent | bba31cce0521e014109fc805671d4cff7ee9dbf6 (diff) | |
download | firewall3-8dd290b85ee8d57026581891e9a34945d077fa3b.tar.gz |
options: fix logic flaw when parsing ipaddr/mask notation
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
-rw-r--r-- | options.c | 22 |
1 files changed, 14 insertions, 8 deletions
@@ -268,12 +268,15 @@ fw3_parse_address(void *ptr, const char *val, bool is_list) addr.family = FW3_FAMILY_V6; addr.address.v6 = v6; - if (m && !inet_pton(AF_INET6, m, &addr.mask.v6)) + if (m) { - bits = strtol(m, &e, 10); + if (!inet_pton(AF_INET6, m, &v6)) + { + bits = strtol(m, &e, 10); - if ((*e != 0) || !fw3_bitlen2netmask(addr.family, bits, &v6)) - goto fail; + if ((*e != 0) || !fw3_bitlen2netmask(addr.family, bits, &v6)) + goto fail; + } addr.mask.v6 = v6; } @@ -294,12 +297,15 @@ fw3_parse_address(void *ptr, const char *val, bool is_list) addr.family = FW3_FAMILY_V4; addr.address.v4 = v4; - if (m && !inet_pton(AF_INET, m, &addr.mask.v4)) + if (m) { - bits = strtol(m, &e, 10); + if (!inet_pton(AF_INET, m, &v4)) + { + bits = strtol(m, &e, 10); - if ((*e != 0) || !fw3_bitlen2netmask(addr.family, bits, &v4)) - goto fail; + if ((*e != 0) || !fw3_bitlen2netmask(addr.family, bits, &v4)) + goto fail; + } addr.mask.v4 = v4; } |