diff --git a/mutt_socket.c b/mutt_socket.c
--- a/mutt_socket.c
+++ b/mutt_socket.c
@@ -195,10 +195,13 @@
 int mutt_socket_readln_d (char* buf, size_t buflen, CONNECTION* conn, int dbg)
 {
   char ch;
   int i;
 
+  if (buflen >= INT_MAX)
+      buflen = INT_MAX - 1;
+
   for (i = 0; i < buflen-1; i++)
   {
     if (mutt_socket_readchar (conn, &ch) != 1)
     {
       buf[i] = '\0';
