[kdepimlibs/f14/master] - avoid overlapping memcpy in kio_imap

Rex Dieter rdieter at fedoraproject.org
Thu Jan 20 16:39:31 UTC 2011


commit 7d0fdcfa2ed0b1c6d909dfaadb1a5b878f5f2798
Author: Rex Dieter <rdieter at fedoraproject.org>
Date:   Thu Jan 20 10:38:53 2011 -0600

    - avoid overlapping memcpy in kio_imap

 kdepimlibs-4.5.5-no_overlapping_memcpy.patch |   29 ++++++++++++++++++++++++++
 kdepimlibs.spec                              |   13 +++++++++--
 2 files changed, 39 insertions(+), 3 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 72aec97..6ae66e3 100644
--- a/kdepimlibs.spec
+++ b/kdepimlibs.spec
@@ -6,7 +6,7 @@
 
 Name: kdepimlibs
 Version: 4.5.5
-Release: 1%{?dist}
+Release: 2%{?dist}
 Summary: KDE PIM Libraries
 
 # http://techbase.kde.org/Policies/Licensing_Policy
@@ -15,10 +15,12 @@ Group: System Environment/Libraries
 
 URL: http://www.kde.org/
 Source0: ftp://ftp.kde.org/pub/kde/stable/%{version}/src/kdepimlibs-%{version}.tar.bz2
-# upstream patches, stable branch:
-
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
+## upstreamable patches
+# no overlapping memcpy
+Patch50: kdepimlibs-4.5.5-no_overlapping_memcpy.patch
+
 %if ! 0%{?akonadi_subpkg}
 Obsoletes: %{name}-akonadi < %{version}-%{release}
 Provides:  %{name}-akonadi = %{version}-%{release}
@@ -85,6 +87,8 @@ format for easy browsing.
 %prep
 %setup -q
 
+%patch50 -p1 -b .no_overlapping_memcpy
+
 
 %build
 mkdir -p %{_target_platform}
@@ -211,6 +215,9 @@ rm -rf %{buildroot}
 
 
 %changelog
+* Thu Jan 20 2011 Rex Dieter <rdieter at fedoraproject.org>  4.5.5-2
+- avoid overlapping memcpy in kio_imap
+
 * Wed Jan 05 2011 Rex Dieter <rdieter at fedoraproject.org> 4.5.5-1
 - 4.5.5
 


More information about the scm-commits mailing list