| Summary: | kmail crashes when viewing mails with ics attachments sent from a mac | ||
|---|---|---|---|
| Product: | [Unmaintained] kmail | Reporter: | Mads D. Kristensen <madsdk> |
| Component: | general | Assignee: | kdepim bugs <pim-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | ||
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Gentoo Packages | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: | This is one example of a mail that crashes kmail | ||
|
Description
Mads D. Kristensen
2006-05-10 18:29:04 UTC
Created attachment 16009 [details]
This is one example of a mail that crashes kmail
A bad mail :-)
Could you provide us a backtrace? I can reproduce it with KDE-3.5.5. BT: Using host libthread_db library "/lib/tls/libthread_db.so.1". [KCrash handler] #9 0x4102e8db in strlen () from /lib/tls/libc.so.6 #10 0x40d459a2 in internalLatin1ToUnicode () from /usr/lib/qt3/lib/libqt-mt.so.3 #11 0x40d46b80 in QString::QString () from /usr/lib/qt3/lib/libqt-mt.so.3 #12 0x4185df36 in KCal::ICalFormatImpl::readAttachment () from /opt/kde3/lib/libkcal.so.2 #13 0x4185e0ee in KCal::ICalFormatImpl::readAlarm () from /opt/kde3/lib/libkcal.so.2 #14 0x4185f0e9 in KCal::ICalFormatImpl::readIncidence () from /opt/kde3/lib/libkcal.so.2 #15 0x4186034d in KCal::ICalFormatImpl::readEvent () from /opt/kde3/lib/libkcal.so.2 #16 0x4185892b in KCal::ICalFormat::parseScheduleMessage () from /opt/kde3/lib/libkcal.so.2 #17 0x4186f301 in KCal::IncidenceFormatter::formatICalInvitation () from /opt/kde3/lib/libkcal.so.2 #18 0x4346163b in (anonymous namespace)::Formatter::format () from /opt/kde3/lib/kde3/libkmail_bodypartformatter_text_calendar.so #19 0x4039b151 in KMail::ObjectTreeParser::parseObjectTree () from /opt/kde3/lib/libkmailprivate.so #20 0x4039b76c in KMail::ObjectTreeParser::stdChildHandling () from /opt/kde3/lib/libkmailprivate.so #21 0x4039ba8d in KMail::ObjectTreeParser::processMultiPartMixedSubtype () from /opt/kde3/lib/libkmailprivate.so #22 0x403a370b in (anonymous namespace)::MultiPartMixedBodyPartFormatter::process () from /opt/kde3/lib/libkmailprivate.so #23 0x4039b478 in KMail::ObjectTreeParser::parseObjectTree () from /opt/kde3/lib/libkmailprivate.so #24 0x40262db9 in KMReaderWin::parseMsg () from /opt/kde3/lib/libkmailprivate.so #25 0x4025b6c3 in KMReaderWin::displayMessage () from /opt/kde3/lib/libkmailprivate.so #26 0x4025b85d in KMReaderWin::updateReaderWin () from /opt/kde3/lib/libkmailprivate.so #27 0x4025f7d0 in KMReaderWin::qt_invoke () from /opt/kde3/lib/libkmailprivate.so #28 0x40a56c9e in QObject::activate_signal () from /usr/lib/qt3/lib/libqt-mt.so.3 #29 0x40a57446 in QObject::activate_signal () from /usr/lib/qt3/lib/libqt-mt.so.3 #30 0x40db2e29 in QTimer::timeout () from /usr/lib/qt3/lib/libqt-mt.so.3 #31 0x40a7be9f in QTimer::event () from /usr/lib/qt3/lib/libqt-mt.so.3 #32 0x409f367f in QApplication::internalNotify () from /usr/lib/qt3/lib/libqt-mt.so.3 #33 0x409f5263 in QApplication::notify () from /usr/lib/qt3/lib/libqt-mt.so.3 #34 0x407022e1 in KApplication::notify () from /opt/kde3/lib/libkdecore.so.4 #35 0x409e7cbc in QEventLoop::activateTimers () from /usr/lib/qt3/lib/libqt-mt.so.3 #36 0x409a01d9 in QEventLoop::processEvents () from /usr/lib/qt3/lib/libqt-mt.so.3 #37 0x40a0b441 in QEventLoop::enterLoop () from /usr/lib/qt3/lib/libqt-mt.so.3 #38 0x40a0b286 in QEventLoop::exec () from /usr/lib/qt3/lib/libqt-mt.so.3 #39 0x409f512f in QApplication::exec () from /usr/lib/qt3/lib/libqt-mt.so.3 #40 0x0804a6a6 in main () SVN commit 600496 by mkoller:
BUG: 127095
BUG: 88840
When parsing an ATTACH;VALUE=URI: element, take care of casting
to the right datatype
M +15 -8 icalformatimpl.cpp
--- branches/KDE/3.5/kdepim/libkcal/icalformatimpl.cpp #600495:600496
@@ -1183,19 +1183,26 @@
Attachment *ICalFormatImpl::readAttachment(icalproperty *attach)
{
- icalattach *a = icalproperty_get_attach(attach);
-
Attachment *attachment = 0;
- int isurl = icalattach_get_is_url (a);
- if (isurl == 0)
- attachment = new Attachment((const char*)icalattach_get_data(a));
- else {
- attachment = new Attachment(QString(icalattach_get_url(a)));
+ icalvalue_kind value_kind = icalvalue_isa(icalproperty_get_value(attach));
+
+ if ( value_kind == ICAL_ATTACH_VALUE ) {
+ icalattach *a = icalproperty_get_attach(attach);
+
+ int isurl = icalattach_get_is_url (a);
+ if (isurl == 0)
+ attachment = new Attachment((const char*)icalattach_get_data(a));
+ else {
+ attachment = new Attachment(QString(icalattach_get_url(a)));
+ }
}
+ else if ( value_kind == ICAL_URI_VALUE ) {
+ attachment = new Attachment(QString(icalvalue_get_uri(icalproperty_get_value(attach))));
+ }
icalparameter *p = icalproperty_get_first_parameter(attach, ICAL_FMTTYPE_PARAMETER);
- if (p)
+ if (p && attachment)
attachment->setMimeType(QString(icalparameter_get_fmttype(p)));
return attachment;
|