pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
pkg/30534: mini_sendmail messes up parsing some messages
>Number: 30534
>Category: pkg
>Synopsis: mini_sendmail messes up parsing some messages
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Jun 15 19:13:00 +0000 2005
>Originator: Bill Studenmund
>Release: pkgsrc current
>Organization:
>Environment:
>Description:
I noticed that occasionally I would send EMail and it would just
never appear anywhere. The account with the problem is the only account
I have that uses mini_sendmail.
After turning on debugging, I realized that some EMails work, and some
fail with an error 553. Upon further investigation, I found out
that the problem is mutt will wrap cc: recipients (and probably to:)
to extra lines if there are too many, and mini_sendmail's EMail parse
machine didn't work that right. Problem text looks like:
Cc: 'Torrey Morales' <billntorrey%covad.net@localhost>,
'William Studenmund' <wrstuden%stanfordalumni.org@localhost>
mini_sendmail assumes everything fits in one line.
>How-To-Repeat:
1) Set mutt up to use mini_sendmail as its mail transport
2) Send a message with lots of cc: names
3) Watch EMail seem to send yet go nowhere.
>Fix:
The fix is to change mini_sendmail's state machine to handle the case
of a line feed right after a comma, so that it will keep looking on a
following line for recipients.
The following patch fixed mini_sendmail for me.
--- mini_sendmail.c.pkg Wed Jun 8 23:19:01 2005
+++ mini_sendmail.c Wed Jun 8 23:24:56 2005
@@ -366,6 +366,7 @@
#define ST_BC 5
#define ST_RECIPHEAD 6
#define ST_RECIPS 7
+#define ST_RECIPMORE 8
char* cp;
char* bcc;
char* recip;
@@ -489,9 +490,18 @@
}
break;
case ST_RECIPS:
+ /* FALLTHROUGH */
+ case ST_RECIPMORE:
switch ( *cp )
{
case '\n':
+ if ( cp == recip && state == ST_RECIPMORE )
+ {
+ /* Just parsed a ",\n", so ignore the \n */
+ recip = cp + 1;
+ state = ST_RECIPS;
+ break;
+ }
add_recipient( recip, ( cp - recip ) );
state = ST_BOL;
if ( bcc != (char*) 0 )
>Unformatted:
mini_sendmail-1.3.2nb3
Home |
Main Index |
Thread Index |
Old Index