X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/bc237bbae1393cacee9d534832a050f1148b0d8b..ddf5b0259b7246c0d3207ceb22ea72379ae64e89:/uip/dropsbr.c diff --git a/uip/dropsbr.c b/uip/dropsbr.c index baf8268b..a02e29c4 100644 --- a/uip/dropsbr.c +++ b/uip/dropsbr.c @@ -1,6 +1,4 @@ - -/* - * dropsbr.c -- create/read/manipulate mail drops +/* dropsbr.c -- create/read/manipulate mail drops * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for @@ -272,7 +270,7 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, int i, j, size; off_t start, stop; long pos; - char *cp, buffer[BUFSIZ]; + char *cp, buffer[BUFSIZ + 1]; /* Space for NUL. */ FILE *fp; pos = (long) lseek (md, (off_t) 0, SEEK_CUR); @@ -295,10 +293,8 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, size++; } - while ((i = read (fd, buffer, sizeof(buffer))) > 0) { - /* valgrind noticed that stringdex depends on null - termination. */ - buffer[i] = '\0'; + while ((i = read (fd, buffer, sizeof buffer - 1)) > 0) { + buffer[i] = '\0'; /* Terminate for stringdex(). */ for ( ; (j = stringdex (mmdlm1, buffer)) >= 0; buffer[j]++) continue; @@ -351,7 +347,7 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, * back to "From ". */ if (has_prefix(buffer, "Return-Path:")) { - char tmpbuffer[BUFSIZ]; + char tmpbuffer[sizeof buffer]; char *tp, *ep, *fp; strncpy(tmpbuffer, buffer, sizeof(tmpbuffer)); @@ -366,7 +362,7 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, * Change the "X-Envelope-From:" field * (if first line) back to "From ". */ - char tmpbuffer[BUFSIZ]; + char tmpbuffer[sizeof buffer]; char *ep; strncpy(tmpbuffer, buffer, sizeof(tmpbuffer)); @@ -377,7 +373,7 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, * If there is already a "From " line, * then leave it alone. Else we add one. */ - char tmpbuffer[BUFSIZ]; + char tmpbuffer[sizeof buffer]; char *tp, *ep; strncpy(tmpbuffer, buffer, sizeof(tmpbuffer)); @@ -652,7 +648,7 @@ map_chk (char *file, int fd, struct drop *dp, long pos, int noisy) if (read (fd, (char *) &tmpd, sizeof(*dp)) != sizeof(*dp)) { #ifdef notdef - admonish (NULL, "%s: missing or partial index", file); + inform("%s: missing or partial index, continuing...", file); #endif /* notdef */ return NOTOK; } @@ -667,22 +663,21 @@ map_chk (char *file, int fd, struct drop *dp, long pos, int noisy) if (dp->d_size != DRVRSN) { if (noisy) - admonish (NULL, "%s: version mismatch (%d != %d)", file, + inform("%s: version mismatch (%d != %d), continuing...", file, dp->d_size, DRVRSN); return NOTOK; } if (dp->d_stop != pos) { if (noisy && pos != (long) 0) - admonish (NULL, - "%s: pointer mismatch or incomplete index (%ld!=%ld)", - file, dp->d_stop, (long) pos); + inform("%s: pointer mismatch or incomplete index (%ld!=%ld), " + "continuing...", file, dp->d_stop, (long) pos); return NOTOK; } if ((long) ((dp->d_id + 1) * sizeof(*dp)) != (long) lseek (fd, (off_t) 0, SEEK_END)) { if (noisy) - admonish (NULL, "%s: corrupt index(1)", file); + inform("%s: corrupt index(1), continuing...", file); return NOTOK; } @@ -693,7 +688,7 @@ map_chk (char *file, int fd, struct drop *dp, long pos, int noisy) || (ntohl(dl->d_stop) != dp->d_stop && ntohl(dl->d_stop) + count != dp->d_stop)) { if (noisy) - admonish (NULL, "%s: corrupt index(2)", file); + inform("%s: corrupt index(2), continuing...", file); return NOTOK; }