On Wed, Jan 30, 2019 at 10:39:11PM +0100, Klemens Nanni wrote:
> OK?
OK bluhm@
> Index: parse.y
> ===================================================================
> RCS file: /cvs/src/sbin/pfctl/parse.y,v
> retrieving revision 1.689
> diff -u -p -r1.689 parse.y
> --- parse.y 11 Jan 2019 01:56:54 -0000 1.689
> +++ parse.y 30 Jan 2019 21:20:32 -0000
> @@ -1990,7 +1990,7 @@ filter_opt : USER uids {
> }
> filter_opts.divert.type = PF_DIVERT_REPLY;
> }
> - | DIVERTPACKET PORT number {
> + | DIVERTPACKET PORT portplain {
> if (filter_opts.divert.type != PF_DIVERT_NONE) {
> yyerror("more than one divert option");
> YYERROR;
> @@ -2003,11 +2003,11 @@ filter_opt : USER uids {
> if (pf->reassemble & PF_REASS_ENABLED)
> filter_opts.marker |= FOM_SCRUB_TCP;
>
> - if ($3 < 1 || $3 > 65535) {
> - yyerror("invalid divert port");
> + filter_opts.divert.port = $3.a;
> + if (!filter_opts.divert.port) {
> + yyerror("invalid divert port: %u", ntohs($3.a));
> YYERROR;
> }
> - filter_opts.divert.port = htons($3);
> }
> | SCRUB '(' scrub_opts ')' {
> filter_opts.nodf = $3.nodf;
> @@ -5755,6 +5755,7 @@ parseport(char *port, struct range *r, i
> r->t = PF_OP_RRG;
> return (0);
> }
> + yyerror("port is invalid: %s", port);
> return (-1);
> }
>