From: Jeremy Harris Date: Thu, 21 Mar 2019 20:01:03 +0000 (+0000) Subject: Harden plaintext authenticator X-Git-Url: https://git.exim.org/exim.git/commitdiff_plain/3063baa25c0a8103438ee73051e61f82476861b3 Harden plaintext authenticator Cherry-picked from: f9fc942757 (cherry picked from commit e5b942ae007d0533fbd599c64d550f3a8355b940) (cherry picked from commit 7556111f007c98f11adfa27c492d73b775886d9d) --- diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index d90feee08..3c16c3d12 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -45,6 +45,11 @@ JH/10 OpenSSL: Fix aggregation of messages. Previously, when PIPELINING was dropped connections and sometimes bounces generated by a peer sending to this system. +JH/11 Harden plaintext authenticator against a badly misconfigured client-send + string. Previously it was possible to cause undefined behaviour in a + library routine (usually a crash). Found by "zerons". + + Exim version 4.92 ----------------- diff --git a/src/src/auths/plaintext.c b/src/src/auths/plaintext.c index 7a0f78852..fa05b0ad5 100644 --- a/src/src/auths/plaintext.c +++ b/src/src/auths/plaintext.c @@ -223,11 +223,7 @@ while ((s = string_nextinlist(&text, &sep, big_buffer, big_buffer_size))) if (ss[i+1] != '^') ss[i] = 0; else - { - i++; - len--; - memmove(ss + i, ss + i + 1, len - i); - } + if (--len > ++i) memmove(ss + i, ss + i + 1, len - i); /* The first string is attached to the AUTH command; others are sent unembellished. */