internal representation of icmp type/code in pfctl(8)/pf(4) does not
authorsashan <sashan@openbsd.org>
Tue, 7 Feb 2023 17:58:43 +0000 (17:58 +0000)
committersashan <sashan@openbsd.org>
Tue, 7 Feb 2023 17:58:43 +0000 (17:58 +0000)
fit into u_int8_t. Issue has been noticed and kindly reported by
amalinin _at_ bh0.amt.ru via bugs@.

OK bluhm@

sbin/pfctl/parse.y
sys/net/pfvar.h

index 2c5a497..de1506c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: parse.y,v 1.712 2022/09/23 21:33:17 bluhm Exp $       */
+/*     $OpenBSD: parse.y,v 1.713 2023/02/07 17:58:43 sashan Exp $      */
 
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
@@ -134,8 +134,8 @@ struct node_gid {
 };
 
 struct node_icmp {
-       u_int8_t                 code;
-       u_int8_t                 type;
+       u_int16_t                code;  /* aux. value 256 is legit */
+       u_int16_t                type;  /* aux. value 256 is legit */
        u_int8_t                 proto;
        struct node_icmp        *next;
        struct node_icmp        *tail;
index 1453bc3..3a7ff6b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: pfvar.h,v 1.528 2023/01/06 17:44:34 sashan Exp $ */
+/*     $OpenBSD: pfvar.h,v 1.529 2023/02/07 17:58:43 sashan Exp $ */
 
 /*
  * Copyright (c) 2001 Daniel Hartmeier
@@ -572,8 +572,8 @@ struct pf_rule {
        u_int8_t                 keep_state;
        sa_family_t              af;
        u_int8_t                 proto;
-       u_int8_t                 type;
-       u_int8_t                 code;
+       u_int16_t                type;  /* aux. value 256 is legit */
+       u_int16_t                code;  /* aux. value 256 is legit */
        u_int8_t                 flags;
        u_int8_t                 flagset;
        u_int8_t                 min_ttl;
@@ -592,7 +592,6 @@ struct pf_rule {
        u_int8_t                 set_prio[2];
        sa_family_t              naf;
        u_int8_t                 rcvifnot;
-       u_int8_t                 pad[2];
 
        struct {
                struct pf_addr          addr;