git: e68de6694381 - main - pfctl: improve error reporting for routehost
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 27 Jan 2022 07:51:02 UTC
The branch main has been updated by kp:
URL: https://cgit.FreeBSD.org/src/commit/?id=e68de6694381748b7578703b22580c0f17780b32
commit e68de6694381748b7578703b22580c0f17780b32
Author: Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2022-01-05 20:31:02 +0000
Commit: Kristof Provost <kp@FreeBSD.org>
CommitDate: 2022-01-27 06:36:26 +0000
pfctl: improve error reporting for routehost
If an invalid (i.e. overly long) interface name is specified error out
immediately, rather than in expand_rule() so we point at the incorrect
line.
PR: 260958
MFC after: 3 weeks
Differential Revision: https://reviews.freebsd.org/D34008
---
sbin/pfctl/parse.y | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y
index a21643070028..f931d1c062b9 100644
--- a/sbin/pfctl/parse.y
+++ b/sbin/pfctl/parse.y
@@ -4582,6 +4582,10 @@ route_host : STRING {
$$ = calloc(1, sizeof(struct node_host));
if ($$ == NULL)
err(1, "route_host: calloc");
+ if (strlen($1) >= IFNAMSIZ) {
+ yyerror("interface name too long");
+ YYERROR;
+ }
$$->ifname = strdup($1);
set_ipmask($$, 128);
$$->next = NULL;
@@ -4591,8 +4595,13 @@ route_host : STRING {
struct node_host *n;
$$ = $3;
- for (n = $3; n != NULL; n = n->next)
+ for (n = $3; n != NULL; n = n->next) {
+ if (strlen($2) >= IFNAMSIZ) {
+ yyerror("interface name too long");
+ YYERROR;
+ }
n->ifname = strdup($2);
+ }
}
;