Import Debian changes 4.92-8+deb10u6
[hcoop/debian/exim4.git] / debian / patches / 84_18-Security-Fix-off-by-one-in-smtp-transport-read-respo.patch
CommitLineData
0c0c20aa
AM
1From 28335a4704d8d615fd61e05ea6e435a4cd24e4df Mon Sep 17 00:00:00 2001
2From: Qualys Security Advisory <qsa@qualys.com>
3Date: Sun, 21 Feb 2021 22:13:18 -0800
4Subject: [PATCH 18/29] Security: Fix off-by-one in smtp transport (read
5 response)
6
7Based on Heiko Schlittermann's commit 1887a160. This fixes:
8
91/ In src/transports/smtp.c:
10
112281 int n = sizeof(sx->buffer);
122282 uschar * rsp = sx->buffer;
132283
142284 if (sx->esmtp_sent && (n = Ustrlen(sx->buffer)) < sizeof(sx->buffer)/2)
152285 { rsp = sx->buffer + n + 1; n = sizeof(sx->buffer) - n; }
16
17This should probably be either:
18
19rsp = sx->buffer + n + 1; n = sizeof(sx->buffer) - n - 1;
20
21or:
22
23rsp = sx->buffer + n; n = sizeof(sx->buffer) - n;
24
25(not sure which) to avoid an off-by-one.
26---
27 src/transports/smtp.c | 4 ++--
28 1 file changed, 2 insertions(+), 2 deletions(-)
29
30diff --git a/src/transports/smtp.c b/src/transports/smtp.c
31index cc37e73f3..07b63a2aa 100644
32--- a/src/transports/smtp.c
33+++ b/src/transports/smtp.c
34@@ -2328,8 +2328,8 @@ goto SEND_QUIT;
35 int n = sizeof(sx->buffer);
36 uschar * rsp = sx->buffer;
37
38- if (sx->esmtp_sent && (n = Ustrlen(sx->buffer)) < sizeof(sx->buffer)/2)
39- { rsp = sx->buffer + n + 1; n = sizeof(sx->buffer) - n; }
40+ if (sx->esmtp_sent && (n = Ustrlen(sx->buffer) + 1) < sizeof(sx->buffer)/2)
41+ { rsp = sx->buffer + n; n = sizeof(sx->buffer) - n; }
42
43 if (smtp_write_command(sx, SCMD_FLUSH, "HELO %s\r\n", sx->helo_data) < 0)
44 goto SEND_FAILED;
45--
462.30.2
47