diff -u -p -Nr --exclude CVS mailutils-20020409.orig/imap4d/fetch.c mailutils-20020409/imap4d/fetch.c
--- mailutils-20020409.orig/imap4d/fetch.c	2001-12-16 16:59:13.000000000 +0100
+++ mailutils-20020409/imap4d/fetch.c	2005-05-26 20:07:05.000000000 +0200
@@ -1133,6 +1140,10 @@ fetch_io (stream_t stream, unsigned long
       else
 	util_send (" \"\"");
     }
+  else if (end + 2 < end) /* Check for integer overflow */
+    {
+      return RESP_BAD;
+    }
   else
     {
       char *buffer, *p;
diff -u -p -Nr --exclude CVS mailutils-20020409.orig/imap4d/util.c mailutils-20020409/imap4d/util.c
--- mailutils-20020409.orig/imap4d/util.c	2002-03-26 18:24:06.000000000 +0100
+++ mailutils-20020409/imap4d/util.c	2005-05-27 08:04:37.000000000 +0200
@@ -175,7 +175,7 @@ util_msgset (char *s, size_t **set, int 
 	  {
 	    errno = 0;
 	    val = strtoul (s, &s, 10);
-	    if (val == ULONG_MAX && errno == ERANGE)
+	    if ((val == ULONG_MAX && errno == ERANGE) || val > max)
 	      {
 		if (*set)
 		  free (*set);
