From: Thomas McGuire <mcguire@kde.org>
Subject: Fix POP3 mailcheck aborting because of internal memory errors.
Bug: https://bugs.kde.org/show_bug.cgi?id=230072
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=600907
Origin: backport, http://websvn.kde.org/?revision=1156867&view=revision
Last-Update: 2010-11-28

We were using memcpy() with overlapping memory regions, which does not
work. Now, use memmove().

Thanks to Sven-Ola Tuecke <sven-ola at gmx dot de> for finding and
fixing this problem!

The bug was a cause of POP3 mails not getting deleted from POP3 servers.
--- a/kioslave/pop3/pop3.cpp
+++ b/kioslave/pop3/pop3.cpp
@@ -145,7 +145,7 @@ ssize_t POP3Protocol::myRead(void *data,
     memcpy(data, readBuffer, copyLen);
     readBufferLen -= copyLen;
     if (readBufferLen)
-      memcpy(readBuffer, &readBuffer[copyLen], readBufferLen);
+      memmove(readBuffer, &readBuffer[copyLen], readBufferLen);
     return copyLen;
   }
   waitForResponse(600);
@@ -164,7 +164,7 @@ ssize_t POP3Protocol::myReadLine(char *d
       data[copyLen] = '\0';
       readBufferLen -= copyLen;
       if (readBufferLen)
-        memcpy(readBuffer, &readBuffer[copyLen], readBufferLen);
+        memmove(readBuffer, &readBuffer[copyLen], readBufferLen);
       return copyLen;
     }
     waitForResponse(600);
