aports/main/procmail/procmail-3.23pre.patch
2017-12-13 09:45:50 +00:00

258 lines
8.8 KiB
Diff

From: Santiago Vila <sanvila@debian.org>
Subject: diff from procmail-3.22 to procmail-3.23pre
X-Debian-version: 3.22-1
--- a/HISTORY
+++ b/HISTORY
@@ -491,8 +491,8 @@
- Root owned lockfiles aren't bogus
- A lone trailing '$' wasn't terminated properly when expanded
Changes to formail:
- - Replies without the -t flag go to the envelope sender
- - Replies without "-a Resent-" and -t flag ignore the
+ - Replies without the -t option go to the envelope sender
+ - Replies without "-a Resent-" and -t option ignore the
Resent-* headers
- Prevent corrupt idcaches by suppressing the -n option when
splitting with the -D option
@@ -509,7 +509,7 @@
Changed the form of tempfile names to make them `more' unique
and deal with filename length limits more gracefully
Updated the FAQ and the list of mirrors in the README
- Documented the exact behavior of lockfile's -! flag
+ Documented the exact behavior of lockfile's -! option
Documented the suggested usage of -r vs -rt
2000/08/25: v3.15
Changes to procmail:
@@ -588,7 +588,7 @@
Changes to lockfile:
- Include the system mailbox lockfile path in the -v output
- Resist attempts to use a setuid lockfile command
- - Fix infinite loop on -l, -r, or -s flag with no value
+ - Fix infinite loop on -l, -r, or -s option with no value
Documented formail's treatment of >From_ lines as continuations
of the From_ line and warned of problems caused by non-RFC822
field names like 'Old-From '
@@ -623,3 +623,8 @@
More paranoia: start to use strlcpy()
Generate safe temp and maildir filenames when the hostname
contains / or : by mapping them to \ooo
+2001/09/13: v3.23pre
+ Changes to procmail:
+ - Don't coredump in comsat code if interrupted early
+ - Correctly handle COMSAT=on
+ - Once used the 'H' flag would never be cleared
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1,5 +1,5 @@
#define VERSION "\
- v3.22 2001/09/10\n\
+ v3.23pre 2001/09/13\n\
Copyright (c) 1990-2001, Stephen R. van den Berg\t<srb@cuci.nl>\n\
Copyright (c) 1997-2001, Philip A. Guenther\t\t<guenther@sendmail.com>\n\
\n\
--- a/src/comsat.c
+++ b/src/comsat.c
@@ -9,7 +9,7 @@
#ifdef RCS
static /*const*/char rcsid[]=
- "$Id: comsat.c,v 1.5 2001/07/03 15:05:47 guenther Exp $";
+ "$Id: comsat.c,v 1.7 2001/09/13 19:08:49 guenther Exp $";
#endif
#include "procmail.h"
@@ -92,7 +92,7 @@
}
if(newvalid) /* so far, so good */
{ int s;
- if(!*chp) /* no service */
+ if(!chad||!*chp) /* no service */
chp=BIFF_serviceport; /* new balls please! */
s=strtol(chp,&chad,10);
if(chp!=chad) /* the service is not numeric */
@@ -120,7 +120,7 @@
{ int s;const char*p;
if(!csvalid||!buf) /* is comat on and set to a valid address? */
return;
- if(!*cslgname||strlen(cslgname)+2>linebuf) /* is $LOGNAME bogus? */
+ if(!cslgname||!*cslgname||strlen(cslgname)+2>linebuf)/* is $LOGNAME bogus? */
return;
if(!(p=folder?folder:cslastf)) /* do we have a folder? */
return;
--- a/src/header.h
+++ b/src/header.h
@@ -4,12 +4,11 @@
* "-m nnn" fields encountered should be among them or one of *
* the special From_, Article_ or X- fields). *
* *
- * If you need to add one (be sure to update "cdigest" below as *
- * well!), drop me a mail, I might be interested in including *
- * it in the next release. *
+ * If you need to add one, drop me an email at bug@procmail.org. *
+ * I might be interested in including it in the next release. *
* *
************************************************************************/
-/*$Id: header.h,v 1.44 1999/07/06 06:12:22 guenther Exp $*/
+/*$Id: header.h,v 1.45 2001/09/24 03:38:08 guenther Exp $*/
X(returnpath, "Return-Path:") /* RFC 822 */
X(received, "Received:") /* ditto ... */
--- a/src/lmtp.c
+++ b/src/lmtp.c
@@ -7,7 +7,7 @@
************************************************************************/
#ifdef RCS
static /*const*/char rcsid[]=
- "$Id: lmtp.c,v 1.13 2001/06/28 21:44:28 guenther Exp $"
+ "$Id: lmtp.c,v 1.14 2001/09/23 20:17:57 guenther Exp $"
#endif
#include "procmail.h"
#ifdef LMTP
@@ -708,7 +708,7 @@
got-=in-p; /* correct for what disappeared */
}
while(left-=got); /* change listed buffer size */
- *(long*)statep=state; /* save state */
+ *(int*)statep=state; /* save state */
return 0;
}
@@ -765,7 +765,7 @@
got-=in-p; /* correct for what disappeared */
}
while(left-=got); /* change listed buffer size */
- *(long*)statep=state; /* save state */
+ *(int*)statep=state; /* save state */
return 0;
}
--- a/src/memblk.c
+++ b/src/memblk.c
@@ -8,7 +8,7 @@
************************************************************************/
#ifdef RCS
static /*const*/char rcsid[]=
- "$Id: memblk.c,v 1.6 2001/06/28 22:55:09 guenther Exp $"
+ "$Id: memblk.c,v 1.7 2001/09/18 21:59:08 guenther Exp $"
#endif
#include "procmail.h"
#include "robust.h"
@@ -51,11 +51,11 @@
{
#ifdef USE_MMAP
if(mb->fd>=0)
- { long len=mb->len+1;
- if(munmap(mb->p,len))
- mmapfailed(len); /* don't want to continue here */
- if((mb->p=mmap(0,len,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED)
- mmapfailed(len);
+ { long mlen=mb->len+1;
+ if(munmap(mb->p,mlen))
+ mmapfailed(mlen); /* don't want to continue here */
+ if((mb->p=mmap(0,mlen,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED)
+ mmapfailed(mlen);
close(mb->fd);
mb->fd=ropen(devnull,O_RDWR,0); /* XXX Perhaps -1 is better? */
}
@@ -77,8 +77,8 @@
strcpy(filename,MMAP_DIR);
if(unique(filename,strchr(filename,'\0'),MMAP_FILE_LEN,MMAP_PERM,0,0)&&
(mb->fd=ropen(filename,O_RDWR,MMAP_PERM),unlink(filename),mb->fd>=0))
- { mb->filelen=len;
- if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
+ { mb->filelen=len+1;
+ if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
dropf: { close(mb->fd);mb->fd= -1;
if(verbose)nlog("Unable to extend or use tempfile");
}
@@ -98,9 +98,9 @@
}
}
if(mb->fd>=0)
- { if(len>mb->filelen) /* need to extend? */
- { mb->filelen=len;
- if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
+ { if(len>=mb->filelen) /* need to extend? */
+ { mb->filelen=len+1;
+ if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1))
{ char*p=malloc(len+1); /* can't extend, switch to malloc */
tmemmove(p,mb->p,mb->len);
munmap(mb->p,mb->len+1);
@@ -124,9 +124,9 @@
}
else
mb->p=realloc(mb->p,len+1);
- mb->len=len+1;
- mb->p[len]='\0';
+ mb->len=len;
ret1:
+ mb->p[len]='\0';
return 1;
}
--- a/src/memblk.h
+++ b/src/memblk.h
@@ -1,6 +1,6 @@
typedef struct memblk {
char*p; /* where it starts */
- long len; /* currently allocated size */
+ long len; /* current size, not including trailing NUL */
#ifdef USE_MMAP
off_t filelen; /* how long is the file */
int fd; /* file which is mmap()ed */
--- a/src/pipes.c
+++ b/src/pipes.c
@@ -8,7 +8,7 @@
************************************************************************/
#ifdef RCS
static /*const*/char rcsid[]=
- "$Id: pipes.c,v 1.73 2001/08/27 08:43:59 guenther Exp $";
+ "$Id: pipes.c,v 1.74 2001/09/18 22:01:27 guenther Exp $";
#endif
#include "procmail.h"
#include "robust.h"
@@ -145,7 +145,9 @@
if(Stdout)
{ *(eq=strchr(Stdout,'\0')-1)='\0'; /* chop the '=' */
if(!(backblock=getenv(Stdout))) /* no current value? */
- PRDB=PWRB= -1;
+ { PRDB=PWRB= -1;
+ backlen=0;
+ }
else
{ backlen=strlen(backblock);
goto pip;
@@ -155,9 +157,7 @@
pip: rpipe(pbackfd);
rpipe(pinfd); /* main pipes setup */
if(!(pidchild=sfork())) /* create a sending procmail */
- { if(Stdout&&backblock)
- backlen=strlen(backblock);
- else
+ { if(!Stdout)
backblock=source,backlen=len;
childsetup();rclose(PRDI);rclose(PRDB);
rpipe(poutfd);rclose(STDOUT);
--- a/src/procmail.c
+++ b/src/procmail.c
@@ -14,7 +14,7 @@
************************************************************************/
#ifdef RCS
static /*const*/char rcsid[]=
- "$Id: procmail.c,v 1.183 2001/08/31 04:57:36 guenther Exp $";
+ "$Id: procmail.c,v 1.184 2001/09/14 05:54:19 guenther Exp $";
#endif
#include "../patchlevel.h"
#include "procmail.h"
@@ -652,8 +652,7 @@
nrcond= -1;
if(tolock) /* clear temporary buffer for lockfile name */
free(tolock);
- for(i=maxindex(flags);i;i--) /* clear the flags */
- flags[i]=0;
+ bbzero(flags,maxindex(flags)); /* clear the flags */
for(tolock=0,locknext=0;;)
{ chp=skpspace(chp);
switch(i= *chp++)