From 76d7a0dac4f6bbd5825db630174f5eddd8ccc7c4 Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Mar 30 2006 12:13:22 +0000 Subject: - fix truncation of mailbox when running into a disk quota or a full partition. Patch from Solar Designer. --- diff --git a/procmail-3.22-truncate.patch b/procmail-3.22-truncate.patch new file mode 100644 index 0000000..12df2b1 --- /dev/null +++ b/procmail-3.22-truncate.patch @@ -0,0 +1,47 @@ +--- procmail-3.22/src/mailfold.c.truncate 2006-03-30 10:56:58.000000000 -0500 ++++ procmail-3.22/src/mailfold.c 2006-03-30 11:32:19.000000000 -0500 +@@ -30,6 +30,7 @@ + + int logopened,rawnonl; + off_t lasttell; ++static int trunced; + static off_t lastdump; + static volatile int mailread; /* if the mail is completely read in already */ + static struct dyna_array confield; /* escapes, concatenations */ +@@ -81,6 +82,7 @@ + size_t len; + { int i;size_t part; + lasttell=i= -1;SETerrno(EBADF); ++ trunced=0; + if(s>=0) + { if(ft_lock(type)&&(lseek(s,(off_t)0,SEEK_END),fdlock(s))) + nlog("Kernel-lock failed\n"); +@@ -120,13 +122,18 @@ + } + writefin: + i=type!=ft_PIPE&&fsync(s)&&errno!=EINVAL; /* EINVAL => wasn't a file */ ++ if ((i||len)&&lasttell>=0) ++ { int serrno=errno; ++ if(!ftruncate(s,lasttell)) trunced=1; ++ SETerrno(serrno); ++ } + if(ft_lock(type)) + { int serrno=errno; /* save any error information */ + if(fdunlock()) + nlog("Kernel-unlock failed\n"); + SETerrno(serrno); + } +- i=rclose(s)||i; ++ i=rclose(s)||i; /* if this fails, we should truncate, but it's too late */ + } /* return an error even if nothing was to be sent */ + return i&&!len?-1:len; + } +@@ -237,7 +244,7 @@ + #endif + default:writeerr(buf); + } +- if(lasttell>=0&&!truncate(boxname,lasttell)&&(logopened||verbose)) ++ if(lasttell>=0&&trunced&&(logopened||verbose)) + nlog("Truncated file to former size\n"); /* undo garbage */ + ret0: return 0; + } diff --git a/procmail.spec b/procmail.spec index e687781..34097d5 100644 --- a/procmail.spec +++ b/procmail.spec @@ -1,7 +1,7 @@ Summary: The procmail mail processing program. Name: procmail Version: 3.22 -Release: 16.2.1 +Release: 17 License: GPL or Artistic Group: System Environment/Daemons Source: ftp://ftp.procmail.org/pub/procmail/procmail-%{version}.tar.gz @@ -11,6 +11,7 @@ Patch0: procmail-3.22-rhconfig.patch Patch1: procmail-3.15.1-man.patch Patch2: procmail_3.22-8.debian.patch Patch3: procmail-3.22-large_files.patch +Patch4: procmail-3.22-truncate.patch BuildRoot: %{_tmppath}/%{name}-%{version}-root %description @@ -25,6 +26,7 @@ Procmail is also the basis for the SmartList mailing list processor. %patch1 -p1 %patch2 -p1 %patch3 -p1 -b .largefiles +%patch4 -p1 -b .truncate find . -type d -exec chmod 755 {} \; @@ -58,6 +60,10 @@ rm -rf ${RPM_BUILD_ROOT} %{_mandir}/man[15]/* %changelog +* Thu Mar 30 2006 Peter Vrabec 3.22-17 +- fix truncation of mailbox when running into a disk quota or a + full partition. Patch from Solar Designer. + * Fri Feb 10 2006 Jesse Keating - 3.22-16.2.1 - bump again for double-long bug on ppc(64)