Hello community,

here is the log from the commit of package kdepimlibs4 for openSUSE:Factory
checked in at Fri Aug 12 09:39:30 CEST 2011.



--------
--- KDE/kdepimlibs4/kdepimlibs4.changes 2011-08-04 10:53:40.000000000 +0200
+++ /mounts/work_src_done/STABLE/kdepimlibs4/kdepimlibs4.changes        
2011-08-11 15:59:26.000000000 +0200
@@ -1,0 +2,8 @@
+Thu Aug 11 13:58:30 UTC 2011 - [email protected]
+
+- Refresh kdepimlibs-4.7-branch.patch
+  * Fix an IMAP crash
+  * Fix addressbook barcodes when the entry has a photo
+  * Better error checking
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kdepimlibs4.spec ++++++
--- /var/tmp/diff_new_pack.NNpu7O/_old  2011-08-12 09:32:27.000000000 +0200
+++ /var/tmp/diff_new_pack.NNpu7O/_new  2011-08-12 09:32:27.000000000 +0200
@@ -19,7 +19,7 @@
 
 Name:           kdepimlibs4
 Version:        4.7.0
-Release:        2
+Release:        4
 License:        LGPLv2.1+
 Summary:        KDE PIM Libraries
 Url:            http://www.kde.org

++++++ kdepimlibs-4.7-branch.patch ++++++
--- /var/tmp/diff_new_pack.NNpu7O/_old  2011-08-12 09:32:27.000000000 +0200
+++ /var/tmp/diff_new_pack.NNpu7O/_new  2011-08-12 09:32:27.000000000 +0200
@@ -1,3 +1,181 @@
+diff --git a/akonadi/changerecorder_p.h b/akonadi/changerecorder_p.h
+index 4314b40..75e0ca0 100644
+--- a/akonadi/changerecorder_p.h
++++ b/akonadi/changerecorder_p.h
+@@ -165,13 +165,13 @@ class AKONADI_TESTS_EXPORT 
Akonadi::ChangeRecorderPrivate : public Akonadi::Moni
+     void addToStream( QDataStream &stream, const NotificationMessage &msg )
+     {
+         stream << msg.sessionId();
+-        stream << msg.type();
+-        stream << msg.operation();
+-        stream << msg.uid();
++        stream << int(msg.type());
++        stream << int(msg.operation());
++        stream << qulonglong(msg.uid());
+         stream << msg.remoteId();
+         stream << msg.resource();
+-        stream << msg.parentCollection();
+-        stream << msg.parentDestCollection();
++        stream << qulonglong(msg.parentCollection());
++        stream << qulonglong(msg.parentDestCollection());
+         stream << msg.mimeType();
+         stream << msg.itemParts();
+     }
+diff --git a/akonadi/contact/contactviewer.cpp 
b/akonadi/contact/contactviewer.cpp
+index 9b0469b..58e1598 100644
+--- a/akonadi/contact/contactviewer.cpp
++++ b/akonadi/contact/contactviewer.cpp
+@@ -93,8 +93,12 @@ class ContactViewer::Private
+                                          KIcon( QLatin1String( 
"document-open-remote" ) ).pixmap( QSize( 16, 16 ) ) );
+ 
+ #ifdef HAVE_PRISON
++      {
+       KABC::VCardConverter converter;
+-      const QString data = QString::fromUtf8( converter.createVCard( 
mCurrentContact ) );
++      KABC::Addressee addr(mCurrentContact);
++      addr.setPhoto(KABC::Picture());
++      addr.setLogo(KABC::Picture());
++      const QString data = QString::fromUtf8( converter.createVCard( addr ) );
+       mQRCode->setData( data );
+       mDataMatrix->setData( data );
+       mBrowser->document()->addResource( QTextDocument::ImageResource,
+@@ -103,6 +107,7 @@ class ContactViewer::Private
+       mBrowser->document()->addResource( QTextDocument::ImageResource,
+                                          QUrl( QLatin1String( "datamatrix" ) 
),
+                                          mDataMatrix->toImage( QSizeF(50,50) 
) );
++      }
+ #endif // HAVE_PRISON
+ 
+       // merge local and global custom field descriptions
+diff --git a/akonadi/resourcescheduler.cpp b/akonadi/resourcescheduler.cpp
+index b29bfc5..7c9e5be 100644
+--- a/akonadi/resourcescheduler.cpp
++++ b/akonadi/resourcescheduler.cpp
+@@ -456,6 +456,7 @@ static const char s_taskTypes[][25] = {
+       "SyncAll",
+       "SyncCollectionTree",
+       "SyncCollection",
++      "SyncCollectionAttributes",
+       "FetchItem",
+       "ChangeReplay",
+       "DeleteResourceCollection",
+@@ -467,7 +468,7 @@ QDebug Akonadi::operator<<( QDebug d, const 
ResourceScheduler::Task& task )
+ {
+   d << task.serial << s_taskTypes[task.type];
+   if ( task.type != ResourceScheduler::Invalid ) {
+-    if ( task.collection.id() != -1 )
++    if ( task.collection.isValid() )
+       d << "collection" << task.collection.id();
+     if ( task.item.id() != -1 )
+       d << "item" << task.item.id();
+diff --git a/akonadi/resourcescheduler_p.h b/akonadi/resourcescheduler_p.h
+index 3ee72e7..fa76db2 100644
+--- a/akonadi/resourcescheduler_p.h
++++ b/akonadi/resourcescheduler_p.h
+@@ -45,6 +45,7 @@ class ResourceScheduler : public QObject
+   Q_OBJECT
+ 
+   public:
++    // If you change this enum, keep s_taskTypes in sync in 
resourcescheduler.cpp
+     enum TaskType {
+       Invalid,
+       SyncAll,
+diff --git a/kcal/filestorage.cpp b/kcal/filestorage.cpp
+index 7525bd8..e9c5947 100644
+--- a/kcal/filestorage.cpp
++++ b/kcal/filestorage.cpp
+@@ -109,22 +109,27 @@ bool FileStorage::load()
+   // Always try to load with iCalendar. It will detect, if it is actually a
+   // vCalendar file.
+   bool success;
++  QString productId;
+   // First try the supplied format. Otherwise fall through to iCalendar, then
+   // to vCalendar
+   success = saveFormat() && saveFormat()->load( calendar(), d->mFileName );
+-  if ( !success ) {
++  if ( success ) {
++    productId = saveFormat()->loadedProductId();
++  } else {
+     ICalFormat iCal;
+ 
+     success = iCal.load( calendar(), d->mFileName );
+ 
+-    if ( !success ) {
++    if ( success ) {
++      productId = iCal.loadedProductId();
++    } else {
+       if ( iCal.exception() ) {
+         if ( iCal.exception()->errorCode() == ErrorFormat::CalVersion1 ) {
+           // Expected non vCalendar file, but detected vCalendar
+           kDebug() << "Fallback to VCalFormat";
+           VCalFormat vCal;
+           success = vCal.load( calendar(), d->mFileName );
+-          calendar()->setProductId( vCal.productId() );
++          productId = vCal.loadedProductId();
+         } else {
+           return false;
+         }
+@@ -132,11 +137,10 @@ bool FileStorage::load()
+         kDebug() << "Warning! There should be an exception set.";
+         return false;
+       }
+-    } else {
+-      calendar()->setProductId( iCal.loadedProductId() );
+     }
+   }
+ 
++  calendar()->setProductId( productId );
+   calendar()->setModified( false );
+ 
+   return true;
+diff --git a/kcalcore/filestorage.cpp b/kcalcore/filestorage.cpp
+index aa0558a..13b7c6e 100644
+--- a/kcalcore/filestorage.cpp
++++ b/kcalcore/filestorage.cpp
+@@ -105,22 +105,27 @@ bool FileStorage::load()
+   // Always try to load with iCalendar. It will detect, if it is actually a
+   // vCalendar file.
+   bool success;
++  QString productId;
+   // First try the supplied format. Otherwise fall through to iCalendar, then
+   // to vCalendar
+   success = saveFormat() && saveFormat()->load( calendar(), d->mFileName );
+-  if ( !success ) {
++  if ( success ) {
++    productId = saveFormat()->loadedProductId();
++  } else {
+     ICalFormat iCal;
+ 
+     success = iCal.load( calendar(), d->mFileName );
+ 
+-    if ( !success ) {
++    if ( success ) {
++      productId = iCal.loadedProductId();
++    } else {
+       if ( iCal.exception() ) {
+         if ( iCal.exception()->code() == Exception::CalVersion1 ) {
+           // Expected non vCalendar file, but detected vCalendar
+           kDebug() << "Fallback to VCalFormat";
+           VCalFormat vCal;
+           success = vCal.load( calendar(), d->mFileName );
+-          calendar()->setProductId( vCal.productId() );
++          productId = vCal.loadedProductId();
+         } else {
+           return false;
+         }
+@@ -128,11 +133,10 @@ bool FileStorage::load()
+         kDebug() << "Warning! There should be an exception set.";
+         return false;
+       }
+-    } else {
+-      calendar()->setProductId( iCal.loadedProductId() );
+     }
+   }
+ 
++  calendar()->setProductId( productId );
+   calendar()->setModified( false );
+ 
+   return true;
 diff --git a/kcalcore/icalformat_p.cpp b/kcalcore/icalformat_p.cpp
 index 855c8ed..4a63dea 100644
 --- a/kcalcore/icalformat_p.cpp
@@ -13,6 +191,80 @@
    }
  
    c.remove( c.indexOf( x ) );
+diff --git a/kimap/imapstreamparser.cpp b/kimap/imapstreamparser.cpp
+index 3a55cfc..50a8552 100644
+--- a/kimap/imapstreamparser.cpp
++++ b/kimap/imapstreamparser.cpp
+@@ -242,6 +242,9 @@ QList<QByteArray> ImapStreamParser::readParenthesizedList()
+     }
+     if ( m_data.at(i) == '[' ) {
+       concatToLast = true;
++      if ( result.isEmpty() ) {
++        result.append( QByteArray() );
++      }
+       result.last()+='[';
+       ++i;
+       continue;
+diff --git a/kimap/sessionthread.cpp b/kimap/sessionthread.cpp
+index d169cfb..8278156 100644
+--- a/kimap/sessionthread.cpp
++++ b/kimap/sessionthread.cpp
+@@ -104,6 +104,9 @@ void SessionThread::readMessage()
+           literal+= m_stream->readLiteralPart();
+         }
+         *payload << Message::Part(literal);
++      } else {
++        // Oops! Something really bad happened
++        throw ImapParserException( "Inconsistent state, probably due to some 
packet loss" );
+       }
+     }
+ 
+diff --git a/kimap/tests/fetchjobtest.cpp b/kimap/tests/fetchjobtest.cpp
+index ebee93b..749234c 100644
+--- a/kimap/tests/fetchjobtest.cpp
++++ b/kimap/tests/fetchjobtest.cpp
+@@ -104,7 +104,29 @@ void testFetch_data() {
+            << "S: From: John Smith <[email protected]>\r\nTo: 
\"[email protected]\"\r\n\t<[email protected]>\r\nDate:
 Mon, 11 Oct 2010 03:34:48 +0100\r\nSubject: unsubscribe\r\nMessage-ID: 
<[email protected]>\r\n\r\n"
+            << "X";
+   scope.mode = KIMAP::FetchJob::FetchScope::Headers;
+-  QTest::newRow( "partial" ) << false << KIMAP::ImapSet( 11, 11 ) << 1 << 
scenario << scope;
++  QTest::newRow( "connection drop" ) << false << KIMAP::ImapSet( 11, 11 ) << 
1 << scenario << scope;
++
++
++  scenario.clear();
++  // Important bit here if "([127.0.0.1])" which used to crash the stream 
parser
++  scenario << FakeServer::preauth()
++           << "C: A000001 FETCH 11 (RFC822.SIZE INTERNALDATE 
BODY.PEEK[HEADER.FIELDS (TO FROM MESSAGE-ID REFERENCES IN-REPLY-TO SUBJECT 
DATE)] FLAGS UID)"
++           << "S: * 11 FETCH (RFC822.SIZE 770 INTERNALDATE \"11-Oct-2010 
03:33:50 +0100\" BODY[HEADER.FIELDS (TO FROM MESSAGE-ID REFERENCES IN-REPLY-TO 
SUBJECT DATE)] {246}"
++           << "S: ([127.0.0.1])\r\nDate: Mon, 11 Oct 2010 03:34:48 
+0100\r\nSubject: unsubscribe\r\nMessage-ID: 
<[email protected]>\r\n\r\n"
++           << "X";
++  scope.mode = KIMAP::FetchJob::FetchScope::Headers;
++  QTest::newRow( "buffer overwrite" ) << false << KIMAP::ImapSet( 11, 11 ) << 
1 << scenario << scope;
++
++
++  scenario.clear();
++  // We're assuming a buffer overwrite here which made us miss the opening 
parenthesis
++  // for the properties list
++  scenario << FakeServer::preauth()
++           << "C: A000001 FETCH 11 (RFC822.SIZE INTERNALDATE 
BODY.PEEK[HEADER.FIELDS (TO FROM MESSAGE-ID REFERENCES IN-REPLY-TO SUBJECT 
DATE)] FLAGS UID)"
++           << "S: * 11 FETCH {10}doh!\r\n\r\n\r\n)\r\n"
++           << "X";
++  scope.mode = KIMAP::FetchJob::FetchScope::Headers;
++  QTest::newRow( "buffer overwrite 2" ) << false << KIMAP::ImapSet( 11, 11 ) 
<< 1 << scenario << scope;
+ }
+ 
+ void testFetch()
+@@ -139,7 +161,9 @@ void testFetch()
+ 
+ 
+     bool result = job->exec();
+-    QEXPECT_FAIL("partial" , "Expected failure on partial response", 
Continue);
++    QEXPECT_FAIL("connection drop", "Expected failure on connection drop", 
Continue);
++    QEXPECT_FAIL("buffer overwrite", "Expected failure on confused list", 
Continue);
++    QEXPECT_FAIL("buffer overwrite 2", "Expected beginning of message 
missing", Continue);
+     QVERIFY( result );
+     if ( result ) {
+       QVERIFY( m_signals.count()>0 );
 diff --git a/kioslave/mbox/readmbox.cpp b/kioslave/mbox/readmbox.cpp
 index c6bcdb0..2473889 100644
 --- a/kioslave/mbox/readmbox.cpp
@@ -26,6 +278,21 @@
        }
  }
  
+diff --git a/kmime/kmime_content.cpp b/kmime/kmime_content.cpp
+index fa1ad6f..a4d873c 100644
+--- a/kmime/kmime_content.cpp
++++ b/kmime/kmime_content.cpp
+@@ -558,8 +558,8 @@ void Content::addContent( Content *c, bool prepend )
+ void Content::removeContent( Content *c, bool del )
+ {
+   Q_D( Content );
+-  Q_ASSERT( d->multipartContents.contains( c ) );
+-
++  if( !d->multipartContents.contains( c ) )
++    return;
+   // This method makes no sense for encapsulated messages. Should be covered 
by the above
+   // assert already, though.
+   Q_ASSERT( !bodyIsMessage() );
 diff --git a/kpimidentities/identity.cpp b/kpimidentities/identity.cpp
 index d4b996a..636a9c2 100644
 --- a/kpimidentities/identity.cpp


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to