Check nat id a bit more strictly.
This commit is contained in:
parent
c9d658e9f7
commit
980ccceb94
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=223079
@ -721,16 +721,18 @@ ipfw_config_nat(int ac, char **av)
|
|||||||
{
|
{
|
||||||
struct cfg_nat *n; /* Nat instance configuration. */
|
struct cfg_nat *n; /* Nat instance configuration. */
|
||||||
int i, off, tok, ac1;
|
int i, off, tok, ac1;
|
||||||
char *id, *buf, **av1;
|
char *id, *buf, **av1, *end;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
av++; ac--;
|
av++; ac--;
|
||||||
/* Nat id. */
|
/* Nat id. */
|
||||||
if (ac && isdigit(**av)) {
|
if (ac == 0)
|
||||||
id = *av;
|
|
||||||
ac--; av++;
|
|
||||||
} else
|
|
||||||
errx(EX_DATAERR, "missing nat id");
|
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)
|
if (ac == 0)
|
||||||
errx(EX_DATAERR, "missing option");
|
errx(EX_DATAERR, "missing option");
|
||||||
|
|
||||||
@ -787,7 +789,6 @@ ipfw_config_nat(int ac, char **av)
|
|||||||
off = sizeof(*n);
|
off = sizeof(*n);
|
||||||
memset(buf, 0, len);
|
memset(buf, 0, len);
|
||||||
n = (struct cfg_nat *)buf;
|
n = (struct cfg_nat *)buf;
|
||||||
i = atoi(id);
|
|
||||||
n->id = i;
|
n->id = i;
|
||||||
|
|
||||||
while (ac > 0) {
|
while (ac > 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user