]> granicus.if.org Git - curl/commitdiff
smtp/pop3/imap_get_message: decrease the data length too...
authorDaniel Stenberg <daniel@haxx.se>
Sat, 13 Jan 2018 05:35:12 +0000 (06:35 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 15 Jan 2018 20:40:52 +0000 (21:40 +0100)
Follow-up commit to 615edc1f73 which was incomplete.

Assisted-by: Max Dymond
Detected by OSS-fuzz
Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5206

lib/imap.c
lib/pop3.c
lib/smtp.c

index 63a998b2b9e9d1a7412f5ec1b74a22c650239a6e..cf278a22ba885b6a8cac3bc321bae8dade459107 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -349,11 +349,13 @@ static void imap_get_message(char *buffer, char **outptr)
 
   if(len > 2) {
     /* Find the start of the message */
-    for(message = buffer + 2; *message == ' ' || *message == '\t'; message++)
+    len -= 2;
+    for(message = buffer + 2; *message == ' ' || *message == '\t';
+        message++, len--)
       ;
 
     /* Find the end of the message */
-    for(len -= 2; len--;)
+    for(; len--;)
       if(message[len] != '\r' && message[len] != '\n' && message[len] != ' ' &&
          message[len] != '\t')
         break;
index 40dde105291dc16a18a2633948959859cb33acae..78f6afef1f4cfc66fd008189e3a986ff74db37ed 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -248,11 +248,13 @@ static void pop3_get_message(char *buffer, char **outptr)
 
   if(len > 2) {
     /* Find the start of the message */
-    for(message = buffer + 2; *message == ' ' || *message == '\t'; message++)
+    len -= 2;
+    for(message = buffer + 2; *message == ' ' || *message == '\t';
+        message++, len--)
       ;
 
     /* Find the end of the message */
-    for(len -= 2; len--;)
+    for(; len--;)
       if(message[len] != '\r' && message[len] != '\n' && message[len] != ' ' &&
          message[len] != '\t')
         break;
index b31ecb4b0f086eeb72193c01ee2902ca597ae899..d9f1a854aa9a509f23c79427f459e7733a7aa44f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -237,11 +237,13 @@ static void smtp_get_message(char *buffer, char **outptr)
 
   if(len > 4) {
     /* Find the start of the message */
-    for(message = buffer + 4; *message == ' ' || *message == '\t'; message++)
+    len -= 4;
+    for(message = buffer + 4; *message == ' ' || *message == '\t';
+        message++, len--)
       ;
 
     /* Find the end of the message */
-    for(len -= 4; len--;)
+    for(; len--;)
       if(message[len] != '\r' && message[len] != '\n' && message[len] != ' ' &&
          message[len] != '\t')
         break;