From 2403d47744568f6ad99fc2e40d05c686a6f9010d Mon Sep 17 00:00:00 2001 From: "Andrey V. Elsukov" Date: Wed, 5 Aug 2020 11:26:49 +0000 Subject: [PATCH] Fix SIGSEGV in ipfw(8) when NAT64 prefix length is omitted. Submitted by: Evgeniy Khramtsov MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D25734 --- sbin/ipfw/nat64clat.c | 3 +++ sbin/ipfw/nat64stl.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/sbin/ipfw/nat64clat.c b/sbin/ipfw/nat64clat.c index 081d199bd59..962fe7064f8 100644 --- a/sbin/ipfw/nat64clat.c +++ b/sbin/ipfw/nat64clat.c @@ -303,6 +303,9 @@ nat64clat_config(const char *name, uint8_t set, int ac, char **av) if ((p = strchr(*av, '/')) != NULL) *p++ = '\0'; + else + errx(EX_USAGE, + "Prefix length required: %s", *av); if (inet_pton(AF_INET6, *av, &prefix) != 1) errx(EX_USAGE, "Bad prefix: %s", *av); diff --git a/sbin/ipfw/nat64stl.c b/sbin/ipfw/nat64stl.c index 44e0cbafbf3..e82ec202b5c 100644 --- a/sbin/ipfw/nat64stl.c +++ b/sbin/ipfw/nat64stl.c @@ -249,6 +249,9 @@ nat64stl_create(const char *name, uint8_t set, int ac, char *av[]) NEED1("IPv6 prefix6 required"); if ((p = strchr(*av, '/')) != NULL) *p++ = '\0'; + else + errx(EX_USAGE, + "Prefix length required: %s", *av); if (inet_pton(AF_INET6, *av, &cfg->prefix6) != 1) errx(EX_USAGE, "Bad prefix: %s", *av); -- 2.45.0