X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/2e08fdfc0ef872c968c2e42b7ee0ede42aee14aa..b62a02a47bef30c4d5d052b5a0dcc582ce9d784e:/uip/dropsbr.c?ds=sidebyside diff --git a/uip/dropsbr.c b/uip/dropsbr.c index 09ee2c1f..da2752d1 100644 --- a/uip/dropsbr.c +++ b/uip/dropsbr.c @@ -14,7 +14,6 @@ #include #include #include -#include #ifdef NTOHLSWAP # include @@ -41,7 +40,7 @@ static int map_open (char *, int); int mbx_open (char *file, int mbx_style, uid_t uid, gid_t gid, mode_t mode) { - int j, count, fd; + int j, count, fd = NOTOK; struct stat st; j = 0; @@ -62,7 +61,7 @@ mbx_open (char *file, int mbx_style, uid_t uid, gid_t gid, mode_t mode) case ETXTBSY: j = errno; sleep (5); - break; + continue; default: /* just return error */ @@ -307,6 +306,10 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, } while ((i = read (fd, buffer, sizeof(buffer))) > 0) { + /* valgrind noticed that stringdex depends on null + termination. */ + buffer[i] = '\0'; + for (j = 0; (j = stringdex (mmdlm1, buffer)) >= 0; buffer[j]++) @@ -564,7 +567,7 @@ map_write (char *mailbox, int md, int id, long last, off_t start, clear = 1; if (!clear && map_chk (file, fd, &d1, pos, noisy)) { - unlink (file); + (void) m_unlink (file); mbx_close (file, fd); if ((fd = map_open (file, md)) == NOTOK) return NOTOK;