[kdepimlibs] - avoid overlapping memcpy in kio_imap

Rex Dieter rdieter at fedoraproject.org
Thu Jan 20 16:42:01 UTC 2011


commit 0ab279a8630622f5b8cdae68e040f5ebeae23560
Author: Rex Dieter <rdieter at fedoraproject.org>
Date:   Thu Jan 20 10:41:24 2011 -0600

    - avoid overlapping memcpy in kio_imap

 kdepimlibs-4.5.5-no_overlapping_memcpy.patch |   29 ++++++++++++++++++++++++++
 kdepimlibs.spec                              |   10 ++++++++-
 2 files changed, 38 insertions(+), 1 deletions(-)
---
diff --git a/kdepimlibs-4.5.5-no_overlapping_memcpy.patch b/kdepimlibs-4.5.5-no_overlapping_memcpy.patch
new file mode 100644
index 0000000..3e8a196
--- /dev/null
+++ b/kdepimlibs-4.5.5-no_overlapping_memcpy.patch
@@ -0,0 +1,29 @@
+Patch to fix kio_imap4 crashes on Fedora 14:
+
+==4767== Source and destination overlap in memcpy(0x4d25b18, 0x4d25b1a, 33)
+==4767==    at 0x4A073BA: memcpy (mc_replace_strmem.c:602)
+==4767==    by 0xB10A9AF: IMAP4Protocol::myRead(void*, long) (string3.h:52)
+==4767==    by 0xB10AAE4: IMAP4Protocol::parseRead(QByteArray&, long, long) (imap4.cpp:680)
+==4767==    by 0xB125535: imapParser::parseLiteral(parseString&, bool, bool) (imapparser.cpp:1897)
+==4767==    by 0xB12D798: imapParser::parseBody(parseString&) (imapparser.cpp:1382)
+==4767==    by 0xB12E1D1: imapParser::parseFetch(unsigned long, parseString&) (imapparser.cpp:1490)
+==4767==    by 0xB12EF84: imapParser::parseUntagged(parseString&) (imapparser.cpp:495)
+==4767==    by 0xB12F4FD: imapParser::parseLoop() (imapparser.cpp:1743)
+==4767==    by 0xB11DFD7: IMAP4Protocol::get(KUrl const&) (imap4.cpp:338)
+==4767==    by 0x3D60D928A4: KIO::SlaveBase::dispatch(int, QByteArray const&) (in /usr/lib64/libkio.so.5.5.0)
+==4767==    by 0xB108843: IMAP4Protocol::dispatch(int, QByteArray const&) (imap4.cpp:1828)
+==4767==    by 0x3D60D8CBC2: KIO::SlaveBase::dispatchLoop() (in /usr/lib64/libkio.so.5.5.0)
+
+
+diff -u -r -p kdepimlibs-4.5.5/kioslave/imap4/imap4.cpp kdepimlibs.fixed/kioslave/imap4/imap4.cpp
+--- kdepimlibs-4.5.5/kioslave/imap4/imap4.cpp	2009-10-26 10:14:11.000000000 +0100
++++ kdepimlibs.fixed/kioslave/imap4/imap4.cpp	2011-01-20 16:37:23.000000000 +0100
+@@ -2577,7 +2577,7 @@ ssize_t IMAP4Protocol::myRead(void *data
+     ssize_t copyLen = (len < readBufferLen) ? len : readBufferLen;
+     memcpy(data, readBuffer, copyLen);
+     readBufferLen -= copyLen;
+-    if (readBufferLen) memcpy(readBuffer, &readBuffer[copyLen], readBufferLen);
++    if (readBufferLen) memmove(readBuffer, &readBuffer[copyLen], readBufferLen);
+     return copyLen;
+   }
+   if (!isConnected()) return 0;
diff --git a/kdepimlibs.spec b/kdepimlibs.spec
index 3ec9683..518b33c 100644
--- a/kdepimlibs.spec
+++ b/kdepimlibs.spec
@@ -17,7 +17,10 @@ URL: http://www.kde.org/
 Source0: ftp://ftp.kde.org/pub/kde/unstable/%{version}/src/kdepimlibs-%{version}.tar.bz2
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
-## upstream patches:
+## upstreamable patches
+# no overlapping memcpy
+Patch50: kdepimlibs-4.5.5-no_overlapping_memcpy.patch
+
 
 %if ! 0%{?akonadi_subpkg}
 Obsoletes: %{name}-akonadi < %{version}-%{release}
@@ -82,6 +85,8 @@ format for easy browsing.
 %prep
 %setup -q
 
+%patch50 -p1 -b .no_overlapping_memcpy
+
 
 %build
 mkdir -p %{_target_platform}
@@ -210,6 +215,9 @@ rm -rf %{buildroot}
 
 
 %changelog
+* Thu Jan 20 2011 Rex Dieter <rdieter at fedoraproject.org> 4.5.95-2
+- avoid overlapping memcpy in kio_imap
+
 * Wed Jan 05 2011 Jaroslav Reznik <jreznik at redhat.com> 4.5.95-1
 - 4.5.95 (4.6rc2)
 


More information about the scm-commits mailing list