[pkg-fetchmail-maint] Bug#416625: [fetchmail-devel] [PATCH] fix
segfault in sink.c if fopen returns NULL
Matthias Andree
matthias.andree at gmx.de
Thu Mar 29 23:55:53 UTC 2007
Nico Golde schrieb am 2007-03-29:
> the attached patch fixes #416625 in Debian.
And removes the error check after writing the DATA line - reinstated,
fflush() added, clarified error messages (sorry this takes another
translation run). I've merged a different patch (attached). Back out
yours first. Still, thank you for forwarding the report and the
suggested fix.
BTW, has anyone ever used BSMTP? It failed for me with PS_SOCKET after
writing the first header, no matter if I used IMAP or POP3 with --all.
The attached patch should fix that as well. (First hunk.)
--
Matthias Andree
-------------- next part --------------
Index: sink.c
===================================================================
--- sink.c (Revision 5069)
+++ sink.c (Revision 5071)
@@ -686,7 +686,7 @@
n = 0;
if (ctl->mda || ctl->bsmtp) {
- n = fwrite(buf, last - buf, 1, sinkfp);
+ n = fwrite(buf, 1, last - buf, sinkfp);
if (ferror(sinkfp)) n = -1;
} else if (ctl->smtp_socket != -1)
n = SockWrite(ctl->smtp_socket, buf, last - buf);
@@ -708,6 +708,12 @@
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 @@
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);
}
More information about the pkg-fetchmail-maint
mailing list