Advisable update for users of CURRENT

Julien ÉLIE julien at trigofacile.com
Sat Oct 25 23:46:14 UTC 2008


Hi,

For those who are running CURRENT INN, I advise to update your installation
to the last version (at least inn-CURRENT-20081026.tar.gz) because of this
bug reported by Wolfgang M. Weyand on news.software.nntp:  articles received
from your peers are concatenated if the body is empty, which sometimes happens
(especially in control.cancel).  It causes INN to save a corrupted message
and to *propagate* a corrupted message.

This bug has been around since 2004 (in CURRENT only).


Example:

-=-=-=-=-=-
[...]
Subject: An empty body

.
CHECK <48ff95c6$0$2868$ba620e4c at news.skynet.be>
CHECK <48ff95ca$0$2849$ba620e4c at news.skynet.be>
CHECK <48fd02c0$0$2858$ba620e4c at news.skynet.be>
TAKETHIS <48f91dc5$0$2864$ba620e4c at news.skynet.be>
Path: [...]

A real article.
.
-=-=-=-=-=-




>    Date: Saturday, October 25, 2008 @ 16:26:12
>  Author: iulius
> Revision: 8149
>
> Fix a bug when articles were fed to innd via IHAVE or TAKETHIS
> with an empty body:  the article terminator was not recognized.
> Therefore, subsequent NNTP commands were eaten inside the article...
>
> Thanks to Wolfgang M. Weyand for having reported this issue.
>
> Modified:
>  trunk/innd/art.c
>
> -------+
> art.c |   15 ++++++++++++++-
> 1 file changed, 14 insertions(+), 1 deletion(-)
>
> Modified: art.c
> ===================================================================
> --- art.c 2008-10-25 18:12:55 UTC (rev 8148)
> +++ art.c 2008-10-25 23:26:12 UTC (rev 8149)
> @@ -947,11 +947,24 @@
>
>         /* Saw \r.  We're just scanning for the article terminator, so if we
>            don't have at least five characters left, we can save effort and
> -           stop now. */
> +           stop now.
> +           We also have to check whether the body begins with the article
> +           terminator. */
> +        if ((i == data->Body + 1) && (bp->used - i > 1)
> +            && (memcmp(&bp->data[i - 1], ".\r\n", 3) == 0)) {
> +            if (cp->State == CSeatarticle)
> +                cp->State = CSgotlargearticle;
> +            else
> +                cp->State = CSgotarticle;
> +            cp->Next = i + 2;
> +            return;
> +        }
> +
>         if (bp->used - i < 5) {
>             cp->Next = i;
>             return;
>         }
> +
>         if (memcmp(&bp->data[i], "\r\n.\r\n", 5) == 0) {
>             if (cp->State == CSeatarticle)
>                 cp->State = CSgotlargearticle;



If you notice other bugs in CURRENT, please report them.  Thanks!

Regards,

-- 
Julien ÉLIE

« La vie est un sommeil, l'amour en est le rêve et vous aurez vécu
  si vous avez aimé. » (Alfred de Musset) 



More information about the inn-workers mailing list