[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: maybe contentfilter trouble
On Thu, Aug 05, 2004 at 02:29:12PM +0400, Eugene Crosser wrote:
> On Thu, 2004-08-05 at 13:23 +0400, Eugene Crosser wrote:
>
> > So, my current theory is that this is smtpserver who somehow remembers
> > negative result from contentfilter and applies it to all consequitive
> > messages. I am going to investigate it today.
>
> Looks like two things interfering:
>
> 1. result sanity check in subdaemon-ctf.c line 710 is too strict: it
> fails if there is no extended code in the message.
Actually that fails, if there is no publishable return code, that is:
"-1 foobar"
is unacceptable, while
"-1 550 foobar"
is acceptable. (And "-1 550 5.7.1 foobar" is too, of course)
> 2. in contentfilter_proc() (subdaemon-ctf.c line 634 and down),
> ctfstate->pbuf does not get initialized, and if sanity check above
> fails, on reception of "#hungry" the *old* value is used. Oops!
Oops indeed.
> This is what I suggest:
>
> Index: subdaemon-ctf.c
> ===================================================================
> RCS file: /cvsroot/zmailer/smtpserver/subdaemon-ctf.c,v
> retrieving revision 1.17
> diff -u -r1.17 subdaemon-ctf.c
> --- subdaemon-ctf.c 9 Jul 2004 21:59:40 -0000 1.17
> +++ subdaemon-ctf.c 5 Aug 2004 10:27:23 -0000
> @@ -660,6 +660,9 @@
> /* We have seen "#hungry\n", now we go and send our little thingie
> down the pipe... */
>
> + if (ctfstate->pbuf) free(ctfstate->pbuf);
> + ctfstate->pbuf=NULL;
> +
> fprintf(ctfstate->outfp, "%s\n", fname);
> fflush(ctfstate->outfp);
> if (ferror(ctfstate->outfp)) {
> @@ -707,9 +710,9 @@
> /* We have a reply line here.. */
> {
> int i;
> - rc = sscanf(ctfstate->buf, "%i %i %i", &i, &i, &i);
> + rc = sscanf(ctfstate->buf, "%i %i", &i, &i);
> }
> - if (rc < 3) {
> + if (rc < 2) {
> /* BAD! */
> continue;
> }
>
--
/Matti Aarnio <mea@nic.funet.fi>
-
To unsubscribe from this list: send the line "unsubscribe zmailer" in
the body of a message to majordomo@nic.funet.fi