aboutsummaryrefslogtreecommitdiffstats
path: root/sink.c
diff options
context:
space:
mode:
authorMatthias Andree <matthias.andree@gmx.de>2006-01-19 02:16:36 +0000
committerMatthias Andree <matthias.andree@gmx.de>2006-01-19 02:16:36 +0000
commit22367a0d0236bfcc184bc686a9118ee0b6f7163c (patch)
tree551272f0dd8783ef68304a996eae2d31d113822b /sink.c
parent3d3e4aae94e2ec4930cf74921e27a22e6f6be18f (diff)
downloadfetchmail-22367a0d0236bfcc184bc686a9118ee0b6f7163c.tar.gz
fetchmail-22367a0d0236bfcc184bc686a9118ee0b6f7163c.tar.bz2
fetchmail-22367a0d0236bfcc184bc686a9118ee0b6f7163c.zip
Fix segfault or bus error after bouncing a message. This bug was
introduced into 6.3.0 when removing alloca(); it caused fetchmail to free random memory. Reported by Nathaniel W. Turner, Debian Bug#348747. svn path=/branches/BRANCH_6-3/; revision=4652
Diffstat (limited to 'sink.c')
-rw-r--r--sink.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sink.c b/sink.c
index 532de189..765240ec 100644
--- a/sink.c
+++ b/sink.c
@@ -984,14 +984,19 @@ transient:
#ifdef EXPLICIT_BOUNCE_ON_BAD_ADDRESS
/*
* This should not be necessary, because the SMTP listener itself
- * should genrate a bounce for the bad address.
+ * should generate a bounce for the bad address.
+ *
+ * XXX FIXME 2006-01-19: is this comment true? I don't think
+ * it is, because the SMTP listener isn't required to accept bogus
+ * messages. There appears to be general SMTP<->MDA and
+ * responsibility confusion.
*/
if (*bad_addresses)
send_bouncemail(ctl, msg, XMIT_RCPTBAD,
"Some addresses were rejected by the MDA fetchmail forwards to.\r\n",
*bad_addresses, from_responses);
while (*bad_addresses)
- free(from_responses[*--bad_addresses]);
+ free(from_responses[--*bad_addresses]);
free(from_responses);
#endif /* EXPLICIT_BOUNCE_ON_BAD_ADDRESS */