diff options
author | Thomas Haller <thaller@redhat.com> | 2023-10-23 19:00:47 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2023-10-24 11:31:02 +0200 |
commit | 122dce6b35205a3df419a5cae9acfd6e83e8725a (patch) | |
tree | bce5908adbb4606c3b266da440b3de77afb0f9de /src/parser_bison.y | |
parent | f773041121d6d0d112fa9cb003fd791eacd6e43d (diff) |
parser_bison: fix length check for ifname in ifname_expr_alloc()
IFNAMSIZ is 16, and the allowed byte length of the name is one less than
that. Fix the length check and adjust a test for covering the longest
allowed interface name.
This is obviously a change in behavior, because previously interface
names with length 16 were accepted and were silently truncated along the
way. Now they are rejected as invalid.
Fixes: fa52bc225806 ("parser: reject zero-length interface names")
Signed-off-by: Thomas Haller <thaller@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/parser_bison.y')
-rw-r--r-- | src/parser_bison.y | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/parser_bison.y b/src/parser_bison.y index f0652ba6..9bfc3cdb 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -16,6 +16,7 @@ #include <stdio.h> #include <inttypes.h> #include <syslog.h> +#include <net/if.h> #include <netinet/ip.h> #include <netinet/tcp.h> #include <netinet/if_ether.h> @@ -158,7 +159,7 @@ static struct expr *ifname_expr_alloc(const struct location *location, return NULL; } - if (length > 16) { + if (length >= IFNAMSIZ) { xfree(name); erec_queue(error(location, "interface name too long"), queue); return NULL; |