Index: sendmail/bf.c diff -u sendmail/bf.c:8.52 sendmail/bf.c:8.53 --- sendmail/bf.c:8.52 Thu Apr 11 14:00:15 2002 +++ sendmail/bf.c Sat Apr 13 20:55:07 2002 @@ -795,11 +795,12 @@ errno = EINVAL; return -1; #else /* NOFTRUNCATE */ + if (lseek(bfp->bf_disk_fd, 0, SEEK_SET) < 0) + return -1; return ftruncate(bfp->bf_disk_fd, 0); #endif /* NOFTRUNCATE */ } - else - return 0; + return 0; } /* ------------------------------------ Index: sendmail/milter.c diff -u sendmail/milter.c:8.195 sendmail/milter.c:8.196 --- sendmail/milter.c:8.195 Thu Apr 11 10:30:29 2002 +++ sendmail/milter.c Sat Apr 13 20:55:07 2002 @@ -2903,8 +2903,6 @@ { int err; -# if NOFTRUNCATE - /* XXX: Not much we can do except rewind it */ err = sm_io_error(e->e_dfp); (void) sm_io_flush(e->e_dfp, SM_TIME_DEFAULT); @@ -2920,16 +2918,26 @@ /* errno is set implicitly by fseek() before return */ err = sm_io_seek(e->e_dfp, SM_TIME_DEFAULT, 0, SEEK_SET); + if (err < 0) + { + MILTER_DF_ERROR("milter_replbody: sm_io_seek %s: %s"); + return -1; + } +# if NOFTRUNCATE + /* XXX: Not much we can do except rewind it */ + errno = EINVAL; + MILTER_DF_ERROR("milter_replbody: ftruncate not available on this platform (%s:%s)"); + return -1; # else /* NOFTRUNCATE */ err = ftruncate(sm_io_getinfo(e->e_dfp, SM_IO_WHAT_FD, NULL), 0); -# endif /* NOFTRUNCATE */ if (err < 0) { MILTER_DF_ERROR("milter_replbody: sm_io ftruncate %s: %s"); return -1; } +# endif /* NOFTRUNCATE */ } if (prevsize > e->e_msgsize)