untrusted comment: verify with openbsd-72-base.pub RWQTKNnK3CZZ8FRFasLkFh2XrPAuZ0iqGYjkRDFX9rRhzy/rDBiL0X5idu2cVU+JNlRKkWPduCpi5zjB+HOSSGc2fDJ8qLfQZQQ= OpenBSD 7.2 errata 038, 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-72-base.pub \ -x 038_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:24:32 -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;