[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