diff options
author | Jan Engelhardt <jengelh@inai.de> | 2012-07-14 00:06:45 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-07-31 13:32:15 +0200 |
commit | d18b451ec82bbaeaf385241ebdf926912a075ade (patch) | |
tree | 2436e864aae16fde5e7dcdd35e01e5cf2020e272 | |
parent | c0b7138f39882e2bf8f3d85d15e0ffbd868ed7ba (diff) |
libxt_devgroup: guard against negative numbers
More corrections of the strtoul kind.
Signed-off-by: Jan Engelhardt <jengelh@inai.de>
-rw-r--r-- | extensions/libxt_devgroup.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/extensions/libxt_devgroup.c b/extensions/libxt_devgroup.c index 69ae279d..4a69c822 100644 --- a/extensions/libxt_devgroup.c +++ b/extensions/libxt_devgroup.c @@ -46,14 +46,16 @@ static void devgroup_parse_groupspec(const char *arg, unsigned int *group, unsigned int *mask) { char *end; + bool ok; - *group = strtoul(arg, &end, 0); - if (end != arg && (*end == '/' || *end == '\0')) { + ok = xtables_strtoui(arg, &end, group, 0, UINT32_MAX); + if (ok && (*end == '/' || *end == '\0')) { if (*end == '/') - *mask = strtoul(end + 1, &end, 0); + ok = xtables_strtoui(end + 1, NULL, mask, + 0, UINT32_MAX); else *mask = ~0U; - if (*end != '\0' || end == arg) + if (!ok) xtables_error(PARAMETER_PROBLEM, "Bad group value \"%s\"", arg); } else { |