aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Andree <matthias.andree@gmx.de>2006-11-14 09:52:05 +0000
committerMatthias Andree <matthias.andree@gmx.de>2006-11-14 09:52:05 +0000
commitd6b35d62bab9d80f1763a5fa08665d996f9bf787 (patch)
treeb559a404e4e62736a30ea9df3fca24213155198a
parent0fdf82b39a58ce62e79e2ef6090fbffae209eb5d (diff)
downloadfetchmail-d6b35d62bab9d80f1763a5fa08665d996f9bf787.tar.gz
fetchmail-d6b35d62bab9d80f1763a5fa08665d996f9bf787.tar.bz2
fetchmail-d6b35d62bab9d80f1763a5fa08665d996f9bf787.zip
Fix regression from 6.3.4 that crashes fetchmail --mda FOO when encountering
malformed message. Report by Neil Hoggart (also closes BerliOS bugs #9364, #9412, #9449). svn path=/branches/BRANCH_6-3/; revision=4940
-rw-r--r--NEWS3
-rw-r--r--TODO.txt3
-rw-r--r--sink.c10
3 files changed, 8 insertions, 8 deletions
diff --git a/NEWS b/NEWS
index a9572510..2e2fa467 100644
--- a/NEWS
+++ b/NEWS
@@ -55,6 +55,9 @@ fetchmail 6.3.6 (not yet released):
Reported by and fixed in cooperation with Isaac Wilcox.
# BUG FIXES:
+* Repair regression in 6.3.5 that crashes fetchmail when a message with invalid
+ headers is found while fetchmail's mda option is in use. BerliOS bugs #9364,
+ #9412, #9449. Stack backtrace provided by Neil Hoggarth - thanks.
* Repair --logfile, broken in 6.3.5. BerliOS Bug #9059,
reported by Brian Harring.
diff --git a/TODO.txt b/TODO.txt
index 0af633ff..88da9d1c 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,9 +1,6 @@
6.3.6:
MUST DO:
- enforce OpenSSL 0.9.7 for --sslcertck
-WILL NOT DEBUG THESE TWO WITHOUT BACKTRACE - CANNOT REPRODUCE:
-- investigate 6.3.5 regression on spam message (berlios bug #9364)
-- dito, bug #9412
CODE:
- check recent list mail
diff --git a/sink.c b/sink.c
index 2e36e57e..e2d8c7a7 100644
--- a/sink.c
+++ b/sink.c
@@ -1317,14 +1317,14 @@ int close_sink(struct query *ctl, struct msgblk *msg, flag forward)
{
int rc,e,e2,err = 0;
- if (ferror(sinkfp))
- err = 1, e2 = errno;
- if ((fflush(sinkfp)))
- err = 1, e2 = errno;
-
/* close the delivery pipe, we'll reopen before next message */
if (sinkfp)
{
+ if (ferror(sinkfp))
+ err = 1, e2 = errno;
+ if ((fflush(sinkfp)))
+ err = 1, e2 = errno;
+
errno = 0;
rc = pclose(sinkfp);
e = errno;