svn commit: r223079 - head/sbin/ipfw

Andrey V. Elsukov ae at FreeBSD.org
Tue Jun 14 13:02:26 UTC 2011


Author: ae
Date: Tue Jun 14 13:02:26 2011
New Revision: 223079
URL: http://svn.freebsd.org/changeset/base/223079

Log:
  Check nat id a bit more strictly.

Modified:
  head/sbin/ipfw/nat.c

Modified: head/sbin/ipfw/nat.c
==============================================================================
--- head/sbin/ipfw/nat.c	Tue Jun 14 12:40:55 2011	(r223078)
+++ head/sbin/ipfw/nat.c	Tue Jun 14 13:02:26 2011	(r223079)
@@ -721,16 +721,18 @@ ipfw_config_nat(int ac, char **av)
 {
 	struct cfg_nat *n;		/* Nat instance configuration. */
 	int i, off, tok, ac1;
-	char *id, *buf, **av1;
+	char *id, *buf, **av1, *end;
 	size_t len;
 
 	av++; ac--;
 	/* Nat id. */
-	if (ac && isdigit(**av)) {
-		id = *av;
-		ac--; av++;
-	} else
+	if (ac == 0)
 		errx(EX_DATAERR, "missing nat id");
+	id = *av;
+	i = (int)strtol(id, &end, 0);
+	if (i <= 0 || *end != '\0')
+		errx(EX_DATAERR, "illegal nat id: %s", id);
+	av++; ac--;
 	if (ac == 0)
 		errx(EX_DATAERR, "missing option");
 
@@ -787,7 +789,6 @@ ipfw_config_nat(int ac, char **av)
 	off = sizeof(*n);
 	memset(buf, 0, len);
 	n = (struct cfg_nat *)buf;
-	i = atoi(id);
 	n->id = i;
 
 	while (ac > 0) {


More information about the svn-src-head mailing list