untrusted comment: verify with openbsd-64-base.pub RWQq6XmS4eDAcRAOfeUCbGqUWj50zm29hbEjXtrgMa/HklrJkeaSB7u3+n+TDpBoJBfnjI5X13yx/LEG4TYWNTV1MDmAD3hKFQM= OpenBSD 6.4 errata 020, August 2, 2019 smtpd can crash on excessively large input, causing a denial of service. Apply by doing: signify -Vep /etc/signify/openbsd-64-base.pub -x 020_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/smtp_session.c =================================================================== RCS file: /cvs/src/usr.sbin/smtpd/smtp_session.c,v retrieving revision 1.337 diff -u -p -r1.337 smtp_session.c --- usr.sbin/smtpd/smtp_session.c 3 Sep 2018 19:01:29 -0000 1.337 +++ usr.sbin/smtpd/smtp_session.c 1 Aug 2019 21:18:53 -0000 @@ -1650,15 +1650,21 @@ smtp_reply(struct smtp_session *s, char { va_list ap; int n; - char buf[LINE_MAX], tmp[LINE_MAX]; + char buf[LINE_MAX*2], tmp[LINE_MAX*2]; va_start(ap, fmt); n = vsnprintf(buf, sizeof buf, fmt, ap); va_end(ap); - if (n == -1 || n >= LINE_MAX) - fatalx("smtp_reply: line too long"); + if (n < 0) + fatalx("smtp_reply: response format error"); if (n < 4) fatalx("smtp_reply: response too short"); + if (n >= (int)sizeof buf) { + /* only first three bytes are used by SMTP logic, + * so if _our_ reply does not fit entirely in the + * buffer, it's ok to truncate. + */ + } log_trace(TRACE_SMTP, "smtp: %p: >>> %s", s, buf);