From 0429d4e16b5db4e59f1fa926416e346c6e879ca5 Mon Sep 17 00:00:00 2001 From: Matthias Andree Date: Thu, 29 Mar 2007 22:21:25 +0000 Subject: Do not crash with a null pointer dereference when opening the BSMTP file fails. Improve error checking and reporting. Reported by Reto Schttel, Debian Bug#416625. Fix based on a patch by Nico Golde. svn path=/branches/BRANCH_6-3/; revision=5070 --- sink.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'sink.c') diff --git a/sink.c b/sink.c index 92477ef9..22d2243a 100644 --- a/sink.c +++ b/sink.c @@ -708,6 +708,12 @@ static int open_bsmtp_sink(struct query *ctl, struct msgblk *msg, else sinkfp = fopen(ctl->bsmtp, "a"); + if (!sinkfp || ferror(sinkfp)) { + report(stderr, GT_("BSMTP file open failed: %s\n"), + strerror(errno)); + return(PS_BSMTP); + } + /* see the ap computation under the SMTP branch */ need_anglebrs = (msg->return_path[0] != '<'); fprintf(sinkfp, @@ -747,9 +753,9 @@ static int open_bsmtp_sink(struct query *ctl, struct msgblk *msg, fputs("DATA\r\n", sinkfp); - if (ferror(sinkfp)) + if (fflush(sinkfp) || ferror(sinkfp)) { - report(stderr, GT_("BSMTP file open or preamble write failed\n")); + report(stderr, GT_("BSMTP preamble write failed.\n")); return(PS_BSMTP); } -- cgit v1.2.3