untrusted comment: verify with openbsd-73-base.pub
RWQS90bYzZ4XFt1e27Qzdj+l6gE2tG5CvsUdswq6CGtuejEJvuRrTpzYJYAZFVZ0yNwmuc+2Li7rcXcyqJKdu01UF4uvrRmZHwQ=

OpenBSD 7.3 errata 016, September 21, 2023:

npppd(8) could crash by a l2tp message which has an AVP with wrong
length.

Apply by doing:
   signify -Vep /etc/signify/openbsd-73-base.pub \
       -x 016_npppd.patch.sig -m - | (cd /usr/src && patch -p0)

And then rebuild and install npppd:
   cd /usr/src/usr.sbin/npppd
   make obj
   make
   make install

Index: usr.sbin/npppd/l2tp/l2tp_subr.c
===================================================================
RCS file: /cvs/src/usr.sbin/npppd/l2tp/l2tp_subr.c,v
diff -u -p -r1.4 l2tp_subr.c
--- usr.sbin/npppd/l2tp/l2tp_subr.c     8 May 2012 13:15:11 -0000       1.4
+++ usr.sbin/npppd/l2tp/l2tp_subr.c     18 Sep 2023 17:06:34 -0000
@@ -80,10 +80,10 @@ avp_enum(struct l2tp_avp *avp, const u_c
       avp->attr_type |= *(pkt + 1);
       pkt += 2;

-       if (avp->length > pktlen)
+       if (avp->length < 6 || avp->length > pktlen)
               return -1;

-       if (filldata != 0)
+       if (avp->length > 6 && filldata != 0)
               memcpy(avp->attr_value, pkt, avp->length - 6);

       return avp->length;
@@ -285,9 +285,8 @@ avp_find(struct l2tp_avp *avp, const u_c

       while (pktlen >= 6 &&
           (avpsz = avp_enum(avp, pkt, pktlen, fill_data)) > 0) {
+               L2TP_SUBR_ASSERT(avpsz >= 6);
               if (avp->vendor_id != vendor_id || avp->attr_type != attr_type) {
-                       if (avpsz < 6)
-                               return NULL;
                       pkt += avpsz;
                       pktlen -= avpsz;
                       continue;