untrusted comment: verify with openbsd-71-base.pub RWR2eHwZTOEiTWM/33Xm16jI5aUA39RftbJHCAj5QCd7hGjClCJlGYAbshlU/LBcZFHELpT3Di5cxQgQnZud+b8QFl9R5XVsUQI= OpenBSD 7.1 errata 011, September 26, 2022: In smtpd(8), possible use-after-free if TLS handshake fails for outbound connections. Apply by doing: signify -Vep /etc/signify/openbsd-71-base.pub -x 011_smtpd.patch.sig \ -m - | (cd /usr/src && patch -p0) And then rebuild and install smtpd: cd /usr/src/usr.sbin/smtpd make obj make make install Index: usr.sbin/smtpd/mta_session.c =================================================================== RCS file: /cvs/src/usr.sbin/smtpd/mta_session.c,v retrieving revision 1.146 diff -u -p -r1.146 mta_session.c --- usr.sbin/smtpd/mta_session.c 18 Feb 2022 17:02:06 -0000 1.146 +++ usr.sbin/smtpd/mta_session.c 22 Sep 2022 20:44:35 -0000 @@ -1212,6 +1212,8 @@ mta_io(struct io *io, int evt, void *arg if (s->use_smtps) { io_set_write(io); mta_tls_init(s); + if (s->flags & MTA_FREE) + mta_free(s); } else { mta_enter_state(s, MTA_BANNER); @@ -1568,7 +1570,7 @@ mta_tls_init(struct mta_session *s) if ((tls = tls_client()) == NULL) { log_info("%016"PRIx64" mta closing reason=tls-failure", s->id); - mta_free(s); + s->flags |= MTA_FREE; return; } @@ -1582,14 +1584,14 @@ mta_tls_init(struct mta_session *s) if (tls_configure(tls, remote->tls_config) == -1) { log_info("%016"PRIx64" mta closing reason=tls-failure", s->id); tls_free(tls); - mta_free(s); + s->flags |= MTA_FREE; return; } if (io_connect_tls(s->io, tls, s->mxname) == -1) { log_info("%016"PRIx64" mta closing reason=tls-connect-failed", s->id); tls_free(tls); - mta_free(s); + s->flags |= MTA_FREE; } }