Harden plaintext authenticator
authorJeremy Harris <jgh146exb@wizmail.org>
Thu, 21 Mar 2019 20:01:03 +0000 (20:01 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Thu, 21 Mar 2019 20:01:03 +0000 (20:01 +0000)
Cherry-picked from: f9fc942757

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

index 3d63725f21673a8f8d9e1e8b4f2b6a5e3ca0a44b..c34e60d1cda40b7368e755732c1737585204b63b 100644 (file)
@@ -34,6 +34,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.
 
       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
 -----------------
 
 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
       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. */
 
   /* The first string is attached to the AUTH command; others are sent
   unembellished. */