Package: procmail / 3.22-24

00 Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
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++)