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) {
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to