diff options
Diffstat (limited to 'network/opensmtpd/openbsd64-020-smtpd.patch')
-rw-r--r-- | network/opensmtpd/openbsd64-020-smtpd.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/network/opensmtpd/openbsd64-020-smtpd.patch b/network/opensmtpd/openbsd64-020-smtpd.patch new file mode 100644 index 0000000000000..a1aa51607a272 --- /dev/null +++ b/network/opensmtpd/openbsd64-020-smtpd.patch @@ -0,0 +1,27 @@ +--- a/smtpd/smtp_session.c 3 Sep 2018 19:01:29 -0000 1.337 ++++ b/smtpd/smtp_session.c 1 Aug 2019 21:18:53 -0000 +@@ -1904,15 +1904,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); + |