summaryrefslogtreecommitdiffstats
path: root/sys/netgraph/ng_ipfw.c
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2005-02-07 11:16:07 +0000
committerglebius <glebius@FreeBSD.org>2005-02-07 11:16:07 +0000
commit54eb35fe431ead7ff4ff1b0c1824136b7f19b4a1 (patch)
treeaf2a4d046a6dee0408077505f5b19a18495fb2e9 /sys/netgraph/ng_ipfw.c
parent628952636c9d2900c378289f5f819c2c9cbf7888 (diff)
downloadFreeBSD-src-54eb35fe431ead7ff4ff1b0c1824136b7f19b4a1.zip
FreeBSD-src-54eb35fe431ead7ff4ff1b0c1824136b7f19b4a1.tar.gz
Improve parsing of hook name.
Submitted by: ru
Diffstat (limited to 'sys/netgraph/ng_ipfw.c')
-rw-r--r--sys/netgraph/ng_ipfw.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/netgraph/ng_ipfw.c b/sys/netgraph/ng_ipfw.c
index 96df884..b70c8d7 100644
--- a/sys/netgraph/ng_ipfw.c
+++ b/sys/netgraph/ng_ipfw.c
@@ -145,16 +145,16 @@ ng_ipfw_newhook(node_p node, hook_p hook, const char *name)
hpriv_p hpriv;
u_int16_t rulenum;
const char *cp;
- char c;
- int len;
+ char *endptr;
/* Check that name contains only digits */
- for (len = strlen(name), cp = name, c = *cp; len > 0; c =*++cp, len--)
- if (!isdigit(c))
+ for (cp = name; *cp != '\0'; cp++)
+ if (!isdigit(*cp) || (cp[0] == '0' && cp[1] != '\0'))
return (EINVAL);
/* Convert it to integer */
- if ((rulenum = (u_int16_t)strtol(name, NULL, 10)) == 0)
+ rulenum = (u_int16_t)strtol(name, &endptr, 10);
+ if (*endptr != '\0')
return (EINVAL);
/* Allocate memory for this hook's private data */
@@ -186,8 +186,10 @@ hook_p
ng_ipfw_findhook(node_p node, const char *name)
{
u_int16_t n; /* numeric representation of hook */
+ char *endptr;
- if ((n = (u_int16_t)strtol(name, NULL, 10)) == 0)
+ n = (u_int16_t)strtol(name, &endptr, 10);
+ if (*endptr != '\0')
return NULL;
return ng_ipfw_findhook1(node, n);
}
OpenPOWER on IntegriCloud