Merge r258677.

Fix key lookup in ipfw(8) broken since r232865.
Print warning for IPv4 address strings which are valid in
inet_aton() but not valid in inet_pton(). (1)

Found by:       Özkan KIRIK <ozkan.kirik@gmail.com>
Submitted by:   Ian Smith <smithi@nimnet.asn.au> (1)
This commit is contained in:
melifaro 2014-05-08 18:09:32 +00:00
parent 5b893a150d
commit e9871feb64

View File

@ -4274,13 +4274,24 @@ table_fill_xentry(char *arg, ipfw_table_xentry *xent)
addrlen = sizeof(struct in6_addr);
} else {
/* Port or any other key */
key = strtol(arg, &p, 10);
/* Skip non-base 10 entries like 'fa1' */
if (p != arg) {
key = strtol(arg, &p, 10);
if (*p == '\0') {
pkey = (uint32_t *)paddr;
*pkey = htonl(key);
type = IPFW_TABLE_CIDR;
masklen = 32;
addrlen = sizeof(uint32_t);
} else if ((p != arg) && (*p == '.')) {
/*
* Warn on IPv4 address strings
* which are "valid" for inet_aton() but not
* in inet_pton().
*
* Typical examples: '10.5' or '10.0.0.05'
*/
errx(EX_DATAERR,
"Invalid IPv4 address: %s", arg);
}
}
}