From: David Levine Date: Mon, 15 Sep 2014 01:24:24 +0000 (-0500) Subject: Added checks of return value of fwrite() calls where missing. X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/743385eab9ac6f11d8398038a1f2e9b4917ac77c?hp=2105e9d7d4ab69850c857c71e0965e7a7662a9d8 Added checks of return value of fwrite() calls where missing. --- diff --git a/mts/smtp/smtp.c b/mts/smtp/smtp.c index 58ca023c..873e0cd8 100644 --- a/mts/smtp/smtp.c +++ b/mts/smtp/smtp.c @@ -1272,7 +1272,9 @@ sm_fwrite(char *buffer, int len) } } else #endif /* TLS_SUPPORT */ - fwrite(buffer, sizeof(*buffer), len, sm_wfp); + if ((int) fwrite(buffer, sizeof(*buffer), len, sm_wfp) < len) { + advise ("sm_fwrite", "fwrite"); + } #ifdef CYRUS_SASL } else { while (len >= maxoutbuf - sasl_outbuflen) { @@ -1288,7 +1290,10 @@ sm_fwrite(char *buffer, int len) return NOTOK; } - fwrite(output, sizeof(*output), outputlen, sm_wfp); + if (fwrite(output, sizeof(*output), outputlen, sm_wfp) < + outputlen) { + advise ("sm_fwrite", "fwrite"); + } } if (len > 0) { @@ -1435,7 +1440,9 @@ sm_fflush(void) return; } - fwrite(output, sizeof(*output), outputlen, sm_wfp); + if (fwrite(output, sizeof(*output), outputlen, sm_wfp) < outputlen) { + advise ("sm_fflush", "fwrite"); + } sasl_outbuflen = 0; } #endif /* CYRUS_SASL */ diff --git a/sbr/base64.c b/sbr/base64.c index 2fbef4b0..3a578c21 100644 --- a/sbr/base64.c +++ b/sbr/base64.c @@ -83,7 +83,10 @@ writeBase64aux (FILE *in, FILE *out, int crlf) outbuf[2] = '='; } - fwrite (outbuf, sizeof(*outbuf), sizeof(outbuf), out); + if (fwrite (outbuf, sizeof(*outbuf), sizeof(outbuf), out) < + sizeof outbuf) { + advise ("writeBase64aux", "fwrite"); + } if (cc < sizeof(inbuf)) { putc ('\n', out); diff --git a/uip/inc.c b/uip/inc.c index 1ea618db..8b9fe7ae 100644 --- a/uip/inc.c +++ b/uip/inc.c @@ -594,7 +594,9 @@ go_to_it: fseek (pf, 0L, SEEK_CUR); pos = ftell (pf); size = 0; - fwrite (mmdlm1, 1, strlen (mmdlm1), pf); + if (fwrite (mmdlm1, 1, strlen (mmdlm1), pf) < strlen (mmdlm1)) { + advise (mmdlm1, "fwrite"); + } start = ftell (pf); if (pop_retr (i, pop_pack) == NOTOK) @@ -649,7 +651,9 @@ go_to_it: if (packfile) { fseek (pf, stop, SEEK_SET); - fwrite (mmdlm2, 1, strlen (mmdlm2), pf); + if (fwrite (mmdlm2, 1, strlen (mmdlm2), pf) < strlen (mmdlm1)) { + advise (mmdlm2, "fwrite"); + } if (fflush (pf) || ferror (pf)) { int e = errno; pop_quit (); diff --git a/uip/mhcachesbr.c b/uip/mhcachesbr.c index 7814d6ee..56ba9b71 100644 --- a/uip/mhcachesbr.c +++ b/uip/mhcachesbr.c @@ -136,7 +136,9 @@ cache_content (CT ct) while ((cc = fread (buffer, sizeof(*buffer), sizeof(buffer), gp)) > 0) - fwrite (buffer, sizeof(*buffer), cc, fp); + if ((int) fwrite (buffer, sizeof(*buffer), cc, fp) < cc) { + advise ("cache_content", "fwrite"); + } fflush (fp); if (ferror (gp)) { diff --git a/uip/mhfixmsg.c b/uip/mhfixmsg.c index 3180e9ce..4d5083c6 100644 --- a/uip/mhfixmsg.c +++ b/uip/mhfixmsg.c @@ -675,7 +675,9 @@ replace_boundary (CT ct, char *file, char *boundary) { case BODY: fputs ("\n", fpout); /* buf will have a terminating NULL, skip it. */ - fwrite (buf, 1, bufsz-1, fpout); + if ((int) fwrite (buf, 1, bufsz-1, fpout) < bufsz-1) { + advise (file, "fwrite"); + } continue; case FILEEOF: diff --git a/uip/mhoutsbr.c b/uip/mhoutsbr.c index b672de77..ca1acf83 100644 --- a/uip/mhoutsbr.c +++ b/uip/mhoutsbr.c @@ -317,7 +317,9 @@ write8Bit (CT ct, FILE *out) c = '\n'; while ((inbytes = fread (buffer, 1, sizeof buffer, ce->ce_fp)) > 0) { c = buffer[inbytes - 1]; - fwrite (buffer, 1, inbytes, out); + if (fwrite (buffer, 1, inbytes, out) < inbytes) { + advise ("write8Bit", "fwrite"); + } } if (c != '\n') putc ('\n', out); diff --git a/uip/mhparse.c b/uip/mhparse.c index e7782f14..548a9509 100644 --- a/uip/mhparse.c +++ b/uip/mhparse.c @@ -2274,7 +2274,9 @@ open7Bit (CT ct, char **file) cc = len; len -= cc; - fwrite (buffer, sizeof(*buffer), cc, ce->ce_fp); + if ((int) fwrite (buffer, sizeof(*buffer), cc, ce->ce_fp) < cc) { + advise ("open7Bit", "fwrite"); + } if (ferror (ce->ce_fp)) { content_error (ce->ce_file, ct, "error writing to"); goto clean_up; @@ -2409,7 +2411,9 @@ openFile (CT ct, char **file) while ((cc = fread (buffer, sizeof(*buffer), sizeof(buffer), gp)) > 0) - fwrite (buffer, sizeof(*buffer), cc, fp); + if ((int) fwrite (buffer, sizeof(*buffer), cc, fp) < cc) { + advise ("openFile", "fwrite"); + } fflush (fp); if (ferror (gp)) { @@ -2618,7 +2622,9 @@ openFTP (CT ct, char **file) while ((cc= fread (buffer, sizeof(*buffer), sizeof(buffer), gp)) > 0) - fwrite (buffer, sizeof(*buffer), cc, fp); + if ((int) fwrite (buffer, sizeof(*buffer), cc, fp) < cc) { + advise ("openFTP", "fwrite"); + } fflush (fp); if (ferror (gp)) { @@ -2878,7 +2884,9 @@ openURL (CT ct, char **file) while ((cc = fread(buffer, sizeof(*buffer), sizeof(buffer), gp)) > 0) - fwrite(buffer, sizeof(*buffer), cc, fp); + if ((int) fwrite(buffer, sizeof(*buffer), cc, fp) < cc) { + advise ("openURL", "fwrite"); + } fflush(fp); diff --git a/uip/mhshowsbr.c b/uip/mhshowsbr.c index 720ba9bc..6236352c 100644 --- a/uip/mhshowsbr.c +++ b/uip/mhshowsbr.c @@ -424,7 +424,9 @@ show_content_aux2 (CT ct, int alternate, char *cracked, char *buffer, } while ((cc = read(fd, readbuf, sizeof(readbuf))) > 0) { - fwrite(readbuf, sizeof(char), cc, stdout); + if ((ssize_t) fwrite(readbuf, sizeof(char), cc, stdout) < cc) { + advise ("putline", "fwrite"); + } lastchar = readbuf[cc - 1]; } diff --git a/uip/mhstoresbr.c b/uip/mhstoresbr.c index dc7a0f0f..3ca4c7c6 100644 --- a/uip/mhstoresbr.c +++ b/uip/mhstoresbr.c @@ -783,7 +783,9 @@ losing: break; default: - fwrite (buffer, sizeof(*buffer), cc, fp); + if ((int) fwrite (buffer, sizeof(*buffer), cc, fp) < cc) { + advise ("output_content_file", "fwrite"); + } continue; } break; diff --git a/uip/popsbr.c b/uip/popsbr.c index 2d194a67..15d03f0b 100644 --- a/uip/popsbr.c +++ b/uip/popsbr.c @@ -936,7 +936,9 @@ putline (char *s, FILE *iop) return NOTOK; } - fwrite(buf, buflen, 1, iop); + if (fwrite(buf, buflen, 1, iop) < 1) { + advise ("putline", "fwrite"); + } } #endif /* CYRUS_SASL */