[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kmail-devel
Subject:    Re: Serious flaw in ActionScheduler::moveMessage()
From:       Andreas Gungl <a.gungl () gmx ! de>
Date:       2005-12-07 7:42:43
Message-ID: 200512070842.51762 () gungl-dd ! de
[Download RAW message or body]

[Attachment #2 (multipart/signed)]


Am Mittwoch, 7. Dezember 2005 03:00 schrieb Don Sanders:
> On Wednesday 07 December 2005 11:42, Don Sanders wrote:
> > Hi Andreas, et al. thanks for spending time looking into this.
> >
> > On Wednesday 07 December 2005 06:34, Andreas Gungl wrote:
> > > Am Dienstag, 6. Dezember 2005 19:38 schrieb Ingo Klöcker:
> > > > On Tuesday 06 December 2005 12:05, Andreas Gungl wrote:
> > > > > Hi, when working on
> > > > > http://bugs.kde.org/show_bug.cgi?id=113730 I've found some
> > > > > concerns with the following code:
> > > > >
> > > > > void ActionScheduler::moveMessage()
> > > > > ...
> > > > >   if (!orgMsg || !orgMsg->parent()) {
> > > > >     // Original message is gone, no point filtering it
> > > > > anymore mSrcFolder->removeMsg( mSrcFolder->find( msg ) );
> > > > > mExecutingLock = false;
> > > > >     processMessageTimer->start( 0, true );
> >
> > It does look like there is a missing return here. If someone could
> > add one that would be great.
> >
> > Does that solve the crash? If so that should solve 113730 right?
> >
> > > > >   } else {
> > > > >     if (!folder) // no filter folder specified leave in
> > > > > current place folder = orgMsg->parent();
> > > > >   }
> > > > >
> > > > > Given that we cannot identify the original message (e.g. due
> > > > > to a lost X-KMail-Filtered header after spamassassin having
> > > > > wrapped the spam message, see the report for details)
> >
> > This sounds like the root of the problem. If the X-KMail-Filtered
> > header is removed then filtering can fail. The X-KMail-Filtered
> > header should not be removed when the piping a message into an
> > external application.
>
> Oh, if it's desirable for backwards compatibility or something to not
> require the external application to do this, then maybe the pipe
> action(s) should do this itself.
>
> That is before piping into an external app get the X-KMail-Filtered
> value:
>   QString value = msg->headerField( "X-KMail-Filtered" )
> and then after the pipe action is finished put it back in with a
>   newMsg->setHeaderField( "X-KMail-Filtered", value );
>
> How does that sound?

I also came across this solution this morning. I'll add such code tonight.

Andreas

[Attachment #5 (application/pgp-signature)]

_______________________________________________
KMail developers mailing list
KMail-devel@kde.org
https://mail.kde.org/mailman/listinfo/kmail-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic