Hello community, here is the log from the commit of package kdepim3 checked in at Sun May 7 16:20:52 CEST 2006. -------- --- KDE/kdepim3/kdepim3.changes 2006-04-26 10:28:02.000000000 +0200 +++ STABLE/kdepim3/kdepim3.changes 2006-05-03 20:44:28.000000000 +0200 @@ -1,0 +2,5 @@ +Wed May 3 20:42:32 CEST 2006 - dmueller@suse.de + +- update imap patch to avoid going OOM on overly short headers + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kdepim3.spec ++++++ --- /var/tmp/diff_new_pack.bOexZs/_old 2006-05-07 16:19:49.000000000 +0200 +++ /var/tmp/diff_new_pack.bOexZs/_new 2006-05-07 16:19:49.000000000 +0200 @@ -16,7 +16,7 @@ Group: System/GUI/KDE Summary: Personal Information Manager Software for KDE Version: 3.5.1 -Release: 36 +Release: 40 URL: http://www.kde.org/ Requires: kdelibs3 >= %( echo `rpm -q --queryformat '%{VERSION}' kdelibs3` ) Requires: kdebase3 >= %( echo `rpm -q --queryformat '%{VERSION}' kdelibs3` ) @@ -711,6 +711,8 @@ /opt/kde3/%_lib/kde3/plugins/designer/kpartsdesignerplugin.* %changelog -n kdepim3 +* Wed May 03 2006 - dmueller@suse.de +- update imap patch to avoid going OOM on overly short headers * Wed Apr 26 2006 - dmueller@suse.de - avoid debug output * Mon Apr 24 2006 - wstephenson@suse.de ++++++ kdepim-imap4-fix-oom.diff ++++++ --- /var/tmp/diff_new_pack.bOexZs/_old 2006-05-07 16:19:50.000000000 +0200 +++ /var/tmp/diff_new_pack.bOexZs/_new 2006-05-07 16:19:50.000000000 +0200 @@ -1,63 +1,3 @@ -Index: kioslaves/imap4/mimeheader.cc -=================================================================== ---- kioslaves/imap4/mimeheader.cc (revision 510129) -+++ kioslaves/imap4/mimeheader.cc (working copy) -@@ -331,9 +331,11 @@ - uint vlen, llen; - QString val = aValue; - -+ if ( aLabel.isEmpty() ) // safety check to prevent infinite recursion -+ return; -+ - if (aDict) - { -- - //see if it needs to get encoded - if (encoded && aLabel.find ('*') == -1) - { -@@ -356,13 +358,30 @@ - if (limit > int(vlen)) - limit = vlen; - offset = val.findRev ('%', limit); -+ if ( offset == -1 && ( val.right( 2 ) == "?=" ) ) -+ { -+ // windows variation of % encoding, using = -+ offset = val.findRev('=', limit); -+ } -+ if ( offset == -1 ) // we found no encoding escape chars -+ offset = 0; - if (offset == limit - 1 || offset == limit - 2) - { --// cout << "offset " << offset << "-" << limit << "=" << limit-offset << endl; -+ //kdDebug() << "limit-offset= " << limit << "-" << offset << "=" << limit-offset << endl; - offset = limit - offset; - } - else - offset = 0; -+ if ( ( limit - offset ) < 1 ) -+ { -+ // panic, we can't make this work properly -+ // eg we have a size limit of 1 for the value and encoding dictates -+ // an offset. -+ // for safety, truncate the label chars and try again -+ kdWarning(7116) << k_funcinfo << "Had to truncate oversize mime header label: " << aLabel << " by 20 chars." << endl; -+ setParameter( aLabel.left( llen - 20 ), aValue, aDict ); -+ return; -+ } - shortValue = val.left (limit - offset); - shortLabel.setNum (i); - shortLabel = aLabel + "*" + shortLabel; -@@ -376,7 +395,7 @@ - } - shortLabel += "*"; - } --// cout << shortLabel << "-" << shortValue << endl; -+ //kdDebug() << "shortLabel-shortValue: " << shortLabel << "-" << shortValue << endl; - aDict->insert (shortLabel, new QString (shortValue)); - i++; - } -Index: kioslaves/imap4/imapparser.cc -=================================================================== --- kioslaves/imap4/imapparser.cc (revision 510129) +++ kioslaves/imap4/imapparser.cc (working copy) @@ -949,7 +949,9 @@ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun...
participants (1)
-
root@suse.de