summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Engelhardt <jengelh@inai.de>2012-07-14 00:06:45 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2012-07-31 13:32:15 +0200
commitd18b451ec82bbaeaf385241ebdf926912a075ade (patch)
tree2436e864aae16fde5e7dcdd35e01e5cf2020e272
parentc0b7138f39882e2bf8f3d85d15e0ffbd868ed7ba (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.c10
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 {