Harden plaintext authenticator
authorJeremy Harris <jgh146exb@wizmail.org>
Thu, 21 Mar 2019 20:01:03 +0000 (20:01 +0000)
committerHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Mon, 2 Sep 2019 22:17:33 +0000 (00:17 +0200)
Cherry-picked from: f9fc942757

(cherry picked from commit e5b942ae007d0533fbd599c64d550f3a8355b940)
(cherry picked from commit 7556111f007c98f11adfa27c492d73b775886d9d)

doc/doc-txt/ChangeLog
src/src/auths/plaintext.c

index d90feee08249614a8355e7a3bea45b8a86f76af1..3c16c3d12f15db6e71caa33beba56477b6f9ee4c 100644 (file)
@@ -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
 -----------------
index 7a0f788529456834efb4d6d821fceb76253cc927..fa05b0ad5725d9f947b9d07f8443aa087b7c2841 100644 (file)
@@ -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. */