diff options
| author | Khem Raj <khem.raj@oss.qualcomm.com> | 2026-05-15 07:34:47 -0700 |
|---|---|---|
| committer | Khem Raj <khem.raj@oss.qualcomm.com> | 2026-05-15 09:39:16 -0700 |
| commit | f8787b56f3d67142ab97cc4886afe31fac8b51bc (patch) | |
| tree | 0fdd925586e710138dedeb78cc46eb1cc9c9085f | |
| parent | 428d1462371715d1675e8e620dcd9a66107b8b62 (diff) | |
| download | meta-openembedded-f8787b56f3d67142ab97cc4886afe31fac8b51bc.tar.gz | |
procmail: Upgrade to 3.24
Drop patches to support newer toolchains added overtime
Add consolidated patch to support cross compiling
Use github for SRC_URI
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/0001-fix-too-many-arguments-issue.patch | 88 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/0001-fix-uname-declaration.patch | 27 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/CVE-2014-3618.patch | 29 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/CVE-2017-16844.patch | 20 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-compile-errors.patch | 608 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-man-file.patch | 85 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/from-debian-to-modify-parameters.patch | 129 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/gcc14.patch | 127 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/man-file-mailstat.1-from-debian.patch | 62 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail/procmail-3.24-consolidated_fixes-1.patch | 253 | ||||
| -rw-r--r-- | meta-oe/recipes-support/procmail/procmail_3.24.bb (renamed from meta-oe/recipes-support/procmail/procmail_3.22.bb) | 30 |
11 files changed, 264 insertions, 1194 deletions
diff --git a/meta-oe/recipes-support/procmail/procmail/0001-fix-too-many-arguments-issue.patch b/meta-oe/recipes-support/procmail/procmail/0001-fix-too-many-arguments-issue.patch deleted file mode 100644 index 9b98720b2e..0000000000 --- a/meta-oe/recipes-support/procmail/procmail/0001-fix-too-many-arguments-issue.patch +++ /dev/null | |||
| @@ -1,88 +0,0 @@ | |||
| 1 | From 6f00795de8623347580c4366cb517a6653f73ca4 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Liu Yiding <liuyd.fnst@fujitsu.com> | ||
| 3 | Date: Mon, 9 Jun 2025 08:01:39 +0000 | ||
| 4 | Subject: [PATCH] fix too many arguments issue | ||
| 5 | |||
| 6 | fix issue like: | ||
| 7 | | procmail.c:76:12: error: too many arguments to function 'auth_finduid'; expected 0, have 2 | ||
| 8 | | 76 | if(tpass=auth_finduid(uid,0)) /* save by copying */ | ||
| 9 | | | ^~~~~~~~~~~~ ~~~ | ||
| 10 | | In file included from procmail.c:36: | ||
| 11 | | authenticate.h:15:3: note: declared here | ||
| 12 | | 15 | *auth_finduid Q((const uid_t uid,const int sock)); | ||
| 13 | | -- | ||
| 14 | | procmail.c:212:9: error: too many arguments to function 'checkprivFrom_'; expected 0, have 3 | ||
| 15 | | 212 | checkprivFrom_(euid,passinvk?auth_username(passinvk):0,override); | ||
| 16 | | | ^~~~~~~~~~~~~~ ~~~~ | ||
| 17 | | In file included from procmail.c:41: | ||
| 18 | | from.h:9:2: note: declared here | ||
| 19 | | 9 | checkprivFrom_ Q((uid_t euid,const char*logname,int override)); | ||
| 20 | | -- | ||
| 21 | | procmail.c:213:9: error: too many arguments to function 'doumask'; expected 0, have 1 | ||
| 22 | | 213 | doumask(INIT_UMASK); /* allowed to set the From_ line? */ | ||
| 23 | | | ^~~~~~~ | ||
| 24 | | In file included from procmail.c:23: | ||
| 25 | | robust.h:12:2: note: declared here | ||
| 26 | | 12 | doumask Q((const mode_t mask)); | ||
| 27 | |||
| 28 | Upstream-Status: Submitted [https://github.com/BuGlessRB/procmail/pull/11] | ||
| 29 | Signed-off-by: Liu Yiding <liuyd.fnst@fujitsu.com> | ||
| 30 | --- | ||
| 31 | src/authenticate.h | 2 +- | ||
| 32 | src/exopen.c | 2 +- | ||
| 33 | src/includes.h | 2 +- | ||
| 34 | src/misc.h | 1 + | ||
| 35 | 4 files changed, 4 insertions(+), 3 deletions(-) | ||
| 36 | |||
| 37 | diff --git a/src/authenticate.h b/src/authenticate.h | ||
| 38 | index be9d88d..31e665a 100644 | ||
| 39 | --- a/src/authenticate.h | ||
| 40 | +++ b/src/authenticate.h | ||
| 41 | @@ -7,7 +7,7 @@ typedef struct auth_identity auth_identity; | ||
| 42 | |||
| 43 | #ifndef P | ||
| 44 | #define P(x) x | ||
| 45 | -#define Q(x) () | ||
| 46 | +#define Q(x) x | ||
| 47 | #endif | ||
| 48 | |||
| 49 | /*const*/auth_identity | ||
| 50 | diff --git a/src/exopen.c b/src/exopen.c | ||
| 51 | index c7647e5..46e3467 100644 | ||
| 52 | --- a/src/exopen.c | ||
| 53 | +++ b/src/exopen.c | ||
| 54 | @@ -51,7 +51,7 @@ static const char*safehost P((void)) /* return a hostname safe for filenames */ | ||
| 55 | return sname; | ||
| 56 | } | ||
| 57 | |||
| 58 | -int unique(full,p,len,mode,verbos,flags)char*const full;char*p; | ||
| 59 | +int unique(full,p,len,mode,verbos,flags)const char*const full;char*p; | ||
| 60 | const size_t len;const mode_t mode;const int verbos,flags; | ||
| 61 | { static const char s2c[]=".,+%";static int serial=STRLEN(s2c); | ||
| 62 | static time_t t;char*dot,*end,*host;struct stat filebuf; | ||
| 63 | diff --git a/src/includes.h b/src/includes.h | ||
| 64 | index 7d6b41f..134805b 100644 | ||
| 65 | --- a/src/includes.h | ||
| 66 | +++ b/src/includes.h | ||
| 67 | @@ -530,7 +530,7 @@ extern void*memmove(); | ||
| 68 | * problems caused by one of those types being shorter than int and thereby | ||
| 69 | * being passed differently under ANSI rules. | ||
| 70 | */ | ||
| 71 | -#define Q(args) () | ||
| 72 | +#define Q(args) args | ||
| 73 | |||
| 74 | #ifdef oBRAIN_DAMAGE | ||
| 75 | #undef oBRAIN_DAMAGE | ||
| 76 | diff --git a/src/misc.h b/src/misc.h | ||
| 77 | index 4f62ebc..659dfcb 100644 | ||
| 78 | --- a/src/misc.h | ||
| 79 | +++ b/src/misc.h | ||
| 80 | @@ -1,4 +1,5 @@ | ||
| 81 | /*$Id: misc.h,v 1.56 2001/06/30 01:14:19 guenther Exp $*/ | ||
| 82 | +#include "authenticate.h" | ||
| 83 | |||
| 84 | struct dyna_array{int filled,tspace;char*vals;}; | ||
| 85 | union offori{off_t o;int i;}; | ||
| 86 | -- | ||
| 87 | 2.43.0 | ||
| 88 | |||
diff --git a/meta-oe/recipes-support/procmail/procmail/0001-fix-uname-declaration.patch b/meta-oe/recipes-support/procmail/procmail/0001-fix-uname-declaration.patch deleted file mode 100644 index adbc4f584a..0000000000 --- a/meta-oe/recipes-support/procmail/procmail/0001-fix-uname-declaration.patch +++ /dev/null | |||
| @@ -1,27 +0,0 @@ | |||
| 1 | From a9e57d4048c94f6bc2533ccc41e6c35d4416571a Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Liu Yiding <liuyd.fnst@fujitsu.com> | ||
| 3 | Date: Mon, 9 Jun 2025 06:44:06 +0000 | ||
| 4 | Subject: [PATCH] fix uname declaration | ||
| 5 | |||
| 6 | Upstream-Status: Submitted [https://github.com/BuGlessRB/procmail/pull/11] | ||
| 7 | Signed-off-by: Liu Yiding <liuyd.fnst@fujitsu.com> | ||
| 8 | --- | ||
| 9 | src/includes.h | 2 +- | ||
| 10 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
| 11 | |||
| 12 | diff --git a/src/includes.h b/src/includes.h | ||
| 13 | index 4466907..7d6b41f 100644 | ||
| 14 | --- a/src/includes.h | ||
| 15 | +++ b/src/includes.h | ||
| 16 | @@ -331,7 +331,7 @@ extern int errno; | ||
| 17 | |||
| 18 | #ifndef NOuname | ||
| 19 | #ifndef P /* SINIX V5.23 has the wrong prototype for uname() */ | ||
| 20 | -extern int uname(); /* so we fix it :-) */ | ||
| 21 | +extern int uname(struct utsname *); | ||
| 22 | #define Uname(name) ((int(*)(struct utsname*))uname)(name) | ||
| 23 | #else | ||
| 24 | #define Uname(name) uname(name) /* no fix needed */ | ||
| 25 | -- | ||
| 26 | 2.43.0 | ||
| 27 | |||
diff --git a/meta-oe/recipes-support/procmail/procmail/CVE-2014-3618.patch b/meta-oe/recipes-support/procmail/procmail/CVE-2014-3618.patch deleted file mode 100644 index b041924361..0000000000 --- a/meta-oe/recipes-support/procmail/procmail/CVE-2014-3618.patch +++ /dev/null | |||
| @@ -1,29 +0,0 @@ | |||
| 1 | Description: Fix heap-overflow in formail | ||
| 2 | CVE-2014-3618: Heap-overflow in formail when processing | ||
| 3 | specially-crafted email headers. | ||
| 4 | Origin: http://www.openwall.com/lists/oss-security/2014/09/03/8 | ||
| 5 | Bug-Debian: https://bugs.debian.org/704675 | ||
| 6 | Bug-Debian: https://bugs.debian.org/760443 | ||
| 7 | Forwarded: not-needed | ||
| 8 | Last-Update: 2014-09-04 | ||
| 9 | |||
| 10 | CVE: CVE-2014-3618 | ||
| 11 | Upstream-Status: Inactive-Upstream [lastrelease: 2001] | ||
| 12 | Signed-off-by: Peter Marko <peter.marko@siemens.com> | ||
| 13 | |||
| 14 | --- a/src/formisc.c | ||
| 15 | +++ b/src/formisc.c | ||
| 16 | @@ -84,12 +84,11 @@ normal: *target++= *start++; | ||
| 17 | case '"':*target++=delim='"';start++; | ||
| 18 | } | ||
| 19 | ;{ int i; | ||
| 20 | - do | ||
| 21 | + while(*start) | ||
| 22 | if((i= *target++= *start++)==delim) /* corresponding delimiter? */ | ||
| 23 | break; | ||
| 24 | else if(i=='\\'&&*start) /* skip quoted character */ | ||
| 25 | *target++= *start++; | ||
| 26 | - while(*start); /* anything? */ | ||
| 27 | } | ||
| 28 | hitspc=2; | ||
| 29 | } | ||
diff --git a/meta-oe/recipes-support/procmail/procmail/CVE-2017-16844.patch b/meta-oe/recipes-support/procmail/procmail/CVE-2017-16844.patch deleted file mode 100644 index 6e04989c33..0000000000 --- a/meta-oe/recipes-support/procmail/procmail/CVE-2017-16844.patch +++ /dev/null | |||
| @@ -1,20 +0,0 @@ | |||
| 1 | From: Santiago Vila <sanvila@debian.org> | ||
| 2 | Subject: Fix heap-based buffer overflow in loadbuf() | ||
| 3 | Bug-Debian: http://bugs.debian.org/876511 | ||
| 4 | X-Debian-version: 3.22-26 | ||
| 5 | |||
| 6 | CVE: CVE-2017-16844 | ||
| 7 | Upstream-Status: Inactive-Upstream [lastrelease: 2001] | ||
| 8 | Signed-off-by: Peter Marko <peter.marko@siemens.com> | ||
| 9 | |||
| 10 | --- a/src/formisc.c | ||
| 11 | +++ b/src/formisc.c | ||
| 12 | @@ -103,7 +103,7 @@ | ||
| 13 | } | ||
| 14 | /* append to buf */ | ||
| 15 | void loadbuf(text,len)const char*const text;const size_t len; | ||
| 16 | -{ if(buffilled+len>buflen) /* buf can't hold the text */ | ||
| 17 | +{ while(buffilled+len>buflen) /* buf can't hold the text */ | ||
| 18 | buf=realloc(buf,buflen+=Bsize); | ||
| 19 | tmemmove(buf+buffilled,text,len);buffilled+=len; | ||
| 20 | } | ||
diff --git a/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-compile-errors.patch b/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-compile-errors.patch deleted file mode 100644 index c1f9ce7eca..0000000000 --- a/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-compile-errors.patch +++ /dev/null | |||
| @@ -1,608 +0,0 @@ | |||
| 1 | From 898e9514bc889b4a540f667efed95a5af101c824 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Li xin <lixin.fnst@cn.fujitsu.com> | ||
| 3 | Date: Tue, 2 Dec 2014 07:00:36 +0900 | ||
| 4 | Subject: [PATCH 1/3] From debian to fix compile errors | ||
| 5 | |||
| 6 | Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com> | ||
| 7 | --- | ||
| 8 | Upstream-Status: Pending | ||
| 9 | |||
| 10 | src/Makefile.0 | 7 +++---- | ||
| 11 | src/autoconf | 64 +++++++++++++------------------------------------------- | ||
| 12 | src/comsat.c | 65 +++++++++++++++++++-------------------------------------- | ||
| 13 | src/fields.c | 6 +++--- | ||
| 14 | src/foldinfo.h | 2 +- | ||
| 15 | src/formail.c | 6 +++--- | ||
| 16 | src/formisc.c | 2 +- | ||
| 17 | src/formisc.h | 2 +- | ||
| 18 | src/mailfold.c | 14 ++++++++++--- | ||
| 19 | src/manconf.c | 2 +- | ||
| 20 | src/memblk.c | 24 ++++++++++----------- | ||
| 21 | src/memblk.h | 2 +- | ||
| 22 | src/network.h | 10 ++------- | ||
| 23 | src/pipes.c | 10 ++++----- | ||
| 24 | src/procmail.c | 3 +-- | ||
| 25 | src/recommend.c | 2 +- | ||
| 26 | 16 files changed, 81 insertions(+), 140 deletions(-) | ||
| 27 | |||
| 28 | diff --git a/src/Makefile.0 b/src/Makefile.0 | ||
| 29 | index 6eb5b51..15a2039 100644 | ||
| 30 | --- a/src/Makefile.0 | ||
| 31 | +++ b/src/Makefile.0 | ||
| 32 | @@ -40,7 +40,7 @@ multigram: multigram.$(O) $(MG_OBJ) setid | ||
| 33 | @cd ..; $(MAKE) config.check | ||
| 34 | |||
| 35 | _autotst: _autotst.$(O) sublib.c sublib.h | ||
| 36 | - $(CC) $(CFLAGS) $@.$(O) -o $@ $(LDFLAGS) | ||
| 37 | + gcc $@.$(O) -o $@ $(LDFLAGS) | ||
| 38 | |||
| 39 | ../autoconf.h: autoconf Makefile ../patchlevel.h | ||
| 40 | @echo No this was not make -n >make_n | ||
| 41 | @@ -175,17 +175,16 @@ recommend: recommend.$(O) sublib.$(O) | ||
| 42 | |||
| 43 | ../man/man.sed: manconf.c ../autoconf.h ../config.h includes.h procmail.h | ||
| 44 | ../man/man.sed: ../patchlevel.h | ||
| 45 | - @$(CC) $(CFLAGS) "-DBINDIR=\"$(VISIBLE_BINDIR)\"" -o _autotst \ | ||
| 46 | + gcc "-DBINDIR=\"$(VISIBLE_BINDIR)\"" -o _autotst \ | ||
| 47 | manconf.c $(LDFLAGS) | ||
| 48 | @./_autotst $@ | ||
| 49 | @echo Housekeeping file >$@ | ||
| 50 | - @$(RM) _autotst | ||
| 51 | |||
| 52 | clean: | ||
| 53 | $(RM) -r _locktest | ||
| 54 | $(RM) procmail.$(O) $(PM_OBJ) lockfile.$(O) $(LF_OBJ) formail.$O \ | ||
| 55 | $(FM_OBJ) multigram.$(O) $(MG_OBJ) $(BINSS) multigram ../autoconf.h \ | ||
| 56 | - _autotst* lookfor _locktst* grepfor recommend recommend.$(O) manconf \ | ||
| 57 | + lookfor _locktst* grepfor recommend recommend.$(O) manconf \ | ||
| 58 | _Makefile lock.log *core* targetdir.h setid setid.$(O) gethome \ | ||
| 59 | gethome.$(O) make_n realloc.log | ||
| 60 | |||
| 61 | diff --git a/src/autoconf b/src/autoconf | ||
| 62 | index 1cb4c42..ff78048 100755 | ||
| 63 | --- a/src/autoconf | ||
| 64 | +++ b/src/autoconf | ||
| 65 | @@ -68,8 +68,6 @@ | ||
| 66 | # #define NOfsync | ||
| 67 | #Ok #define endpwent() | ||
| 68 | #Ok #define endgrent() | ||
| 69 | -#Ok #define endhostent() | ||
| 70 | -#Ok #define endservent() | ||
| 71 | #Ok #define endprotoent() | ||
| 72 | # #define h_0addr_list h_addr | ||
| 73 | #Ok #define NOpw_passwd | ||
| 74 | @@ -896,7 +894,7 @@ int main(){int i=0; | ||
| 75 | {uid_t vuid_t;i+=vuid_t=1;} | ||
| 76 | {gid_t vgid_t;i+=vgid_t=1;} | ||
| 77 | #ifndef NO_COMSAT | ||
| 78 | - {struct hostent vhostent;i+=!(vhostent.h_addr_list=0);} | ||
| 79 | + {struct addrinfo res; i+=!(res.ai_socktype=0);} | ||
| 80 | #endif | ||
| 81 | #ifndef NOuname | ||
| 82 | {struct utsname vutsname;i+=!(*vutsname.nodename='\0');} | ||
| 83 | @@ -917,8 +915,6 @@ do | ||
| 84 | test -z "$i3" && grepfor mode_t 'typedef int mode_t;' && i3=I | ||
| 85 | test -z "$i4" && grepfor uid_t 'typedef int uid_t;' && i4=I | ||
| 86 | test -z "$i5" && grepfor gid_t 'typedef int gid_t;' && i5=I | ||
| 87 | - test -z "$i6" && grepfor h_addr_list '#define h_0addr_list h_addr' && i6=I | ||
| 88 | - test -z "$i6" && grepfor hostent '#define h_0addr_list h_addr' && i6=I | ||
| 89 | test -z "$i6" && grepfor member '#define h_0addr_list h_addr' && i6=I | ||
| 90 | test -z "$i7" && grepfor utsname "#define NOuname \ | ||
| 91 | /* <sys/utsname.h> is there, but empty */" && i7=I | ||
| 92 | @@ -1048,8 +1044,12 @@ int main(){char a[2]; | ||
| 93 | {struct utsname b;uname(&b);} | ||
| 94 | #endif | ||
| 95 | #ifndef NO_COMSAT | ||
| 96 | - gethostbyname("0");getprotobyname(COMSATprotocol);endhostent();endservent(); | ||
| 97 | - endprotoent(); | ||
| 98 | + { | ||
| 99 | + struct addrinfo *res, hints; | ||
| 100 | + memset(&hints, '\0', sizeof(hints)); | ||
| 101 | + if(getaddrinfo(COMSAThost,BIFF_serviceport,&hints,&res)) | ||
| 102 | + freeaddrinfo(res); | ||
| 103 | + } | ||
| 104 | #endif | ||
| 105 | _exit(0); | ||
| 106 | return 0;} | ||
| 107 | @@ -1103,14 +1103,9 @@ grepfor uname "\ | ||
| 108 | /* <sys/utsname.h> defines it, the libraries don't */" | ||
| 109 | grepfor endpwent '#define endpwent()' | ||
| 110 | grepfor endgrent '#define endgrent()' | ||
| 111 | -if grepfor gethostbyname '#define NO_COMSAT' | ||
| 112 | +if grepfor getaddrinfo '#define NO_COMSAT' | ||
| 113 | then | ||
| 114 | : | ||
| 115 | -else | ||
| 116 | - grepfor getprotobyname '#define UDP_protocolno 17' | ||
| 117 | - grepfor endhostent '#define endhostent()' | ||
| 118 | - grepfor endservent '#define endservent()' | ||
| 119 | - grepfor endprotoent '#define endprotoent()' | ||
| 120 | fi | ||
| 121 | grepfor strstr '#define SLOWstrstr' || | ||
| 122 | grepfor clock '#define SLOWstrstr' | ||
| 123 | @@ -1239,39 +1234,9 @@ int main(argc,argv)int argc;const char*argv[]; | ||
| 124 | printf("/* Insufficient memory to perform the benchmark! */\n"); | ||
| 125 | #endif /* SLOWstrstr */ | ||
| 126 | #ifndef NO_COMSAT | ||
| 127 | -#ifndef UDP_protocolno | ||
| 128 | - ;{ const struct protoent*p; | ||
| 129 | - if(p=getprotobyname(COMSATprotocol)) | ||
| 130 | - { printf("#define UDP_protocolno %d\n",p->p_proto); | ||
| 131 | -#else | ||
| 132 | - ;{ if(1) | ||
| 133 | - { | ||
| 134 | -#endif | ||
| 135 | - ;{ const struct servent*serv; | ||
| 136 | - if(serv=getservbyname(COMSATservice,COMSATprotocol)) | ||
| 137 | - printf("#define BIFF_serviceport \"%d\"\n", | ||
| 138 | - ntohs(serv->s_port)); | ||
| 139 | - } | ||
| 140 | -#ifdef AF_INET | ||
| 141 | - ;{ const struct hostent*host; | ||
| 142 | - if(!strcmp("localhost",COMSAThost)&& | ||
| 143 | - (host=gethostbyname(COMSAThost))&& | ||
| 144 | - host->h_0addr_list&&host->h_addrtype==AF_INET&& | ||
| 145 | - host->h_length) | ||
| 146 | - { int j=host->h_length; | ||
| 147 | - const unsigned char*ad=(void*)host->h_0addr_list; | ||
| 148 | - printf("#define IP_localhost {"); | ||
| 149 | - printf("%d",*ad++); | ||
| 150 | - while(--j) | ||
| 151 | - printf(",%d",*ad++); | ||
| 152 | - puts("}"); | ||
| 153 | - } | ||
| 154 | - } | ||
| 155 | +#ifndef AF_INET | ||
| 156 | + puts("#define NO_COMSAT"); | ||
| 157 | #endif /* AF_INET */ | ||
| 158 | - } | ||
| 159 | - else | ||
| 160 | - puts("#define NO_COMSAT"); | ||
| 161 | - } | ||
| 162 | #endif /* NO_COMSAT */ | ||
| 163 | ;{ unsigned long s=(size_t)~0;int bits; | ||
| 164 | for(bits=1;s>>=1;bits++); | ||
| 165 | @@ -1470,15 +1435,14 @@ cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL | | ||
| 166 | grep 'Mlocal.*procmail' >$DEVNULL || | ||
| 167 | echo '#define CF_no_procmail_yet' >>$ACONF | ||
| 168 | |||
| 169 | -cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL | | ||
| 170 | - grep '^V' >$DEVNULL || | ||
| 171 | - echo '#define buggy_SENDMAIL' >>$ACONF | ||
| 172 | +# cat /usr/lib/sendmail.cf /etc/sendmail.cf /etc/mail/sendmail.cf 2>$DEVNULL | | ||
| 173 | +# grep '^V' >$DEVNULL || | ||
| 174 | +# echo '#define buggy_SENDMAIL' >>$ACONF | ||
| 175 | |||
| 176 | lpath='/bin' | ||
| 177 | bins="/bin" | ||
| 178 | |||
| 179 | -for newd in /usr/bin /usr/ucb /usr/5bin $BINDIR /local/bin /usr/local/bin \ | ||
| 180 | - /global/bin /usr/bin/X11 /usr/X*/bin | ||
| 181 | +for newd in /usr/bin $BINDIR /usr/bin/X11 /usr/X*/bin | ||
| 182 | do | ||
| 183 | if test -d $newd | ||
| 184 | then | ||
| 185 | diff --git a/src/comsat.c b/src/comsat.c | ||
| 186 | index 77dba34..5082b16 100644 | ||
| 187 | --- a/src/comsat.c | ||
| 188 | +++ b/src/comsat.c | ||
| 189 | @@ -27,7 +27,8 @@ static /*const*/char rcsid[]= | ||
| 190 | #include "comsat.h" | ||
| 191 | |||
| 192 | static int csvalid; /* is it turned on with a good address? */ | ||
| 193 | -static struct sockaddr_in csaddr; | ||
| 194 | +static struct addrinfo cai; | ||
| 195 | +static struct sockaddr *csaddr; | ||
| 196 | static char*cslastf,*cslgname; | ||
| 197 | |||
| 198 | void setlfcs(folder)const char*folder; /* set lastfolder for comsat */ | ||
| 199 | @@ -62,56 +63,32 @@ void setlgcs(name)const char*name; /* set logname for comsat */ | ||
| 200 | } | ||
| 201 | |||
| 202 | int setcomsat(chp)const char*chp; | ||
| 203 | -{ char*chad;int newvalid; struct sockaddr_in newaddr; | ||
| 204 | +{ char*chad;int newvalid; struct addrinfo *res, hints; | ||
| 205 | chad=strchr(chp,SERV_ADDRsep); /* @ separator? */ | ||
| 206 | if(!chad&&!renvint(-1L,chp)) | ||
| 207 | return csvalid=0; /* turned off comsat */ | ||
| 208 | newvalid=1; | ||
| 209 | if(chad) | ||
| 210 | *chad++='\0'; /* split the specifier */ | ||
| 211 | + if(!chad||!*chp) /* no service */ | ||
| 212 | + chp=BIFF_serviceport; /* new balls please! */ | ||
| 213 | if(!chad||!*chad) /* no host */ | ||
| 214 | -#ifndef IP_localhost /* Is "localhost" preresolved? */ | ||
| 215 | chad=COMSAThost; /* nope, use default */ | ||
| 216 | -#else /* IP_localhost */ | ||
| 217 | - { static const unsigned char ip_localhost[]=IP_localhost; | ||
| 218 | - newaddr.sin_family=AF_INET; | ||
| 219 | - tmemmove(&newaddr.sin_addr,ip_localhost,sizeof ip_localhost); | ||
| 220 | - } | ||
| 221 | - else | ||
| 222 | -#endif /* IP_localhost */ | ||
| 223 | - { const struct hostent*host; /* what host? paranoid checks */ | ||
| 224 | - if(!(host=gethostbyname(chad))||!host->h_0addr_list) | ||
| 225 | - { bbzero(&newaddr.sin_addr,sizeof newaddr.sin_addr); | ||
| 226 | - newvalid=0; /* host can't be found, too bad */ | ||
| 227 | - } | ||
| 228 | - else | ||
| 229 | - { newaddr.sin_family=host->h_addrtype; /* address number found */ | ||
| 230 | - tmemmove(&newaddr.sin_addr,host->h_0addr_list,host->h_length); | ||
| 231 | - } | ||
| 232 | - endhostent(); | ||
| 233 | - } | ||
| 234 | - if(newvalid) /* so far, so good */ | ||
| 235 | - { int s; | ||
| 236 | - if(!*chp) /* no service */ | ||
| 237 | - chp=BIFF_serviceport; /* new balls please! */ | ||
| 238 | - s=strtol(chp,&chad,10); | ||
| 239 | - if(chp!=chad) /* the service is not numeric */ | ||
| 240 | - newaddr.sin_port=htons((short)s); /* network order */ | ||
| 241 | - else | ||
| 242 | - { const struct servent*serv; | ||
| 243 | - serv=getservbyname(chp,COMSATprotocol); /* so get its no. */ | ||
| 244 | - if(serv) | ||
| 245 | - newaddr.sin_port=serv->s_port; | ||
| 246 | - else | ||
| 247 | - { newaddr.sin_port=htons((short)0); /* no such service */ | ||
| 248 | - newvalid=0; | ||
| 249 | - } | ||
| 250 | - endservent(); | ||
| 251 | - } | ||
| 252 | - } | ||
| 253 | + bzero(&hints,sizeof(hints)); | ||
| 254 | + hints.ai_socktype=SOCK_DGRAM; | ||
| 255 | + hints.ai_flags=AI_ADDRCONFIG; | ||
| 256 | + if(getaddrinfo(chad,chp,&hints,&res)) | ||
| 257 | + newvalid=0; | ||
| 258 | + | ||
| 259 | onguard(); /* update the address atomically */ | ||
| 260 | if(csvalid=newvalid) | ||
| 261 | - tmemmove(&csaddr,&newaddr,sizeof(newaddr)); | ||
| 262 | + { if(csaddr) | ||
| 263 | + free(csaddr); | ||
| 264 | + csaddr=malloc(res->ai_addrlen); | ||
| 265 | + tmemmove(csaddr,res->ai_addr,res->ai_addrlen); | ||
| 266 | + tmemmove(&cai,res,sizeof(cai)); | ||
| 267 | + freeaddrinfo(res); | ||
| 268 | + } | ||
| 269 | offguard(); | ||
| 270 | return newvalid; | ||
| 271 | } | ||
| 272 | @@ -120,7 +97,7 @@ void sendcomsat(folder)const char*folder; | ||
| 273 | { int s;const char*p; | ||
| 274 | if(!csvalid||!buf) /* is comat on and set to a valid address? */ | ||
| 275 | return; | ||
| 276 | - if(!*cslgname||strlen(cslgname)+2>linebuf) /* is $LOGNAME bogus? */ | ||
| 277 | + if(!cslgname||!*cslgname||strlen(cslgname)+2>linebuf)/* is $LOGNAME bogus? */ | ||
| 278 | return; | ||
| 279 | if(!(p=folder?folder:cslastf)) /* do we have a folder? */ | ||
| 280 | return; | ||
| 281 | @@ -132,8 +109,8 @@ void sendcomsat(folder)const char*folder; | ||
| 282 | } | ||
| 283 | strlcat(buf,COMSATxtrsep,linebuf); /* custom seperator */ | ||
| 284 | strlcat(buf,p,linebuf); /* where was it delivered? */ | ||
| 285 | - if((s=socket(AF_INET,SOCK_DGRAM,UDP_protocolno))>=0) | ||
| 286 | - { sendto(s,buf,strlen(buf),0,(struct sockaddr*)&csaddr,sizeof(csaddr)); | ||
| 287 | + if((s=socket(cai.ai_family,cai.ai_socktype,cai.ai_protocol))>=0) | ||
| 288 | + { sendto(s,buf,strlen(buf),0,csaddr,cai.ai_addrlen); | ||
| 289 | rclose(s); | ||
| 290 | yell("Notified comsat:",buf); | ||
| 291 | } | ||
| 292 | diff --git a/src/fields.c b/src/fields.c | ||
| 293 | index a2bd77f..37ed154 100644 | ||
| 294 | --- a/src/fields.c | ||
| 295 | +++ b/src/fields.c | ||
| 296 | @@ -110,16 +110,16 @@ void dispfield(p)register const struct field*p; | ||
| 297 | /* try and append one valid field to rdheader from stdin */ | ||
| 298 | int readhead P((void)) | ||
| 299 | { int idlen; | ||
| 300 | - getline(); | ||
| 301 | + get_line(); | ||
| 302 | if((idlen=breakfield(buf,buffilled))<=0) /* not the start of a valid field */ | ||
| 303 | return 0; | ||
| 304 | if(idlen==STRLEN(FROM)&&eqFrom_(buf)) /* it's a From_ line */ | ||
| 305 | { if(rdheader) | ||
| 306 | return 0; /* the From_ line was a fake! */ | ||
| 307 | - for(;buflast=='>';getline()); /* gather continued >From_ lines */ | ||
| 308 | + for(;buflast=='>';get_line()); /* gather continued >From_ lines */ | ||
| 309 | } | ||
| 310 | else | ||
| 311 | - for(;;getline()) /* get the rest of the continued field */ | ||
| 312 | + for(;;get_line()) /* get the rest of the continued field */ | ||
| 313 | { switch(buflast) /* will this line be continued? */ | ||
| 314 | { case ' ':case '\t': /* yep, it sure is */ | ||
| 315 | continue; | ||
| 316 | diff --git a/src/foldinfo.h b/src/foldinfo.h | ||
| 317 | index 9e4ebb6..797f9be 100644 | ||
| 318 | --- a/src/foldinfo.h | ||
| 319 | +++ b/src/foldinfo.h | ||
| 320 | @@ -10,7 +10,7 @@ | ||
| 321 | |||
| 322 | #define ft_lock(type) ((type)>ft_MAILDIR) /* kernel lock fd */ | ||
| 323 | #define ft_atime(type) ((type)==ft_FILE) /* force atime < mtime */ | ||
| 324 | -#define ft_dotlock(type) ((type)==ft_FILE) /* dotlock $DEFAULT */ | ||
| 325 | +#define ft_dotlock(type) ((type)>ft_MAILDIR) /* dotlock $DEFAULT */ | ||
| 326 | #define ft_delim(type) ((type)==ft_FILE) /* add MMDF delim */ | ||
| 327 | #define ft_checkcloser(type) ((type)>ft_MH) | ||
| 328 | #define ft_forceblank(type) ((type)!=ft_MAILDIR) /* force blank line at end */ | ||
| 329 | diff --git a/src/formail.c b/src/formail.c | ||
| 330 | index fe5e6be..1f5c9dd 100644 | ||
| 331 | --- a/src/formail.c | ||
| 332 | +++ b/src/formail.c | ||
| 333 | @@ -758,9 +758,9 @@ startover: | ||
| 334 | lputssn(buf,buffilled),ctlength-=buffilled,buffilled=lnl=0; | ||
| 335 | ;{ int tbl=buflast,lwr='\n'; | ||
| 336 | while(--ctlength>=0&&tbl!=EOF) /* skip Content-Length: bytes */ | ||
| 337 | - lnl=lwr==tbl&&lwr=='\n',putcs(lwr=tbl),tbl=getchar(); | ||
| 338 | + lnl=lwr==tbl&&lwr=='\n',lputcs(lwr=tbl),tbl=getchar(); | ||
| 339 | if((buflast=tbl)=='\n'&&lwr!=tbl) /* just before a line break? */ | ||
| 340 | - putcs('\n'),buflast=getchar(); /* wrap up loose end */ | ||
| 341 | + lputcs('\n'),buflast=getchar(); /* wrap up loose end */ | ||
| 342 | } | ||
| 343 | if(!quiet&&ctlength>0) | ||
| 344 | { charNUM(num,ctlength); | ||
| 345 | @@ -819,7 +819,7 @@ splitit: { if(!lnl) /* did the previous mail end with an empty line? */ | ||
| 346 | { if(split) /* gobble up the next start separator */ | ||
| 347 | { buffilled=0; | ||
| 348 | #ifdef sMAILBOX_SEPARATOR | ||
| 349 | - getline();buffilled=0; /* but only if it's defined */ | ||
| 350 | + get_line();buffilled=0; /* but only if it's defined */ | ||
| 351 | #endif | ||
| 352 | if(buflast!=EOF) /* if any */ | ||
| 353 | goto splitit; | ||
| 354 | diff --git a/src/formisc.c b/src/formisc.c | ||
| 355 | index d6cab90..338733b 100644 | ||
| 356 | --- a/src/formisc.c | ||
| 357 | +++ b/src/formisc.c | ||
| 358 | @@ -115,7 +115,7 @@ void loadchar(c)const int c; /* append one character to buf */ | ||
| 359 | buf[buffilled++]=c; | ||
| 360 | } | ||
| 361 | |||
| 362 | -int getline P((void)) /* read a newline-terminated line */ | ||
| 363 | +int get_line P((void)) /* read a newline-terminated line */ | ||
| 364 | { if(buflast==EOF) /* at the end of our Latin already? */ | ||
| 365 | { loadchar('\n'); /* fake empty line */ | ||
| 366 | return EOF; /* spread the word */ | ||
| 367 | diff --git a/src/formisc.h b/src/formisc.h | ||
| 368 | index 1c4ca20..f25211c 100644 | ||
| 369 | --- a/src/formisc.h | ||
| 370 | +++ b/src/formisc.h | ||
| 371 | @@ -17,4 +17,4 @@ void | ||
| 372 | char* | ||
| 373 | skipwords P((char*start)); | ||
| 374 | int | ||
| 375 | - getline P((void)); | ||
| 376 | + get_line P((void)); | ||
| 377 | diff --git a/src/mailfold.c b/src/mailfold.c | ||
| 378 | index 917b502..6c8bcf4 100644 | ||
| 379 | --- a/src/mailfold.c | ||
| 380 | +++ b/src/mailfold.c | ||
| 381 | @@ -30,6 +30,7 @@ static /*const*/char rcsid[]= | ||
| 382 | |||
| 383 | int logopened,rawnonl; | ||
| 384 | off_t lasttell; | ||
| 385 | +static int trunced; | ||
| 386 | static long lastdump; | ||
| 387 | static volatile int mailread; /* if the mail is completely read in already */ | ||
| 388 | static struct dyna_array confield; /* escapes, concatenations */ | ||
| 389 | @@ -81,6 +82,7 @@ long dump(s,type,source,len)const int s,type;const char*source; | ||
| 390 | long len; | ||
| 391 | { int i;long part; | ||
| 392 | lasttell=i= -1;SETerrno(EBADF); | ||
| 393 | + trunced=0; | ||
| 394 | if(s>=0) | ||
| 395 | { if(ft_lock(type)&&(lseek(s,(off_t)0,SEEK_END),fdlock(s))) | ||
| 396 | nlog("Kernel-lock failed\n"); | ||
| 397 | @@ -120,13 +122,18 @@ jin: while(part&&(i=rwrite(s,source,BLKSIZ<part?BLKSIZ:(int)part))) | ||
| 398 | } | ||
| 399 | writefin: | ||
| 400 | i=type!=ft_PIPE&&fsync(s)&&errno!=EINVAL; /* EINVAL => wasn't a file */ | ||
| 401 | + if ((i||len)&&lasttell>=0) | ||
| 402 | + { int serrno=errno; | ||
| 403 | + if(!ftruncate(s,lasttell)) trunced=1; | ||
| 404 | + SETerrno(serrno); | ||
| 405 | + } | ||
| 406 | if(ft_lock(type)) | ||
| 407 | { int serrno=errno; /* save any error information */ | ||
| 408 | if(fdunlock()) | ||
| 409 | nlog("Kernel-unlock failed\n"); | ||
| 410 | SETerrno(serrno); | ||
| 411 | } | ||
| 412 | - i=rclose(s)||i; | ||
| 413 | + i=rclose(s)||i; /* if this fails, we should truncate, but it's too late */ | ||
| 414 | } /* return an error even if nothing was to be sent */ | ||
| 415 | return i&&!len?-1:len; | ||
| 416 | } | ||
| 417 | @@ -237,7 +244,7 @@ dumpf: { switch(errno) | ||
| 418 | #endif | ||
| 419 | default:writeerr(buf); | ||
| 420 | } | ||
| 421 | - if(lasttell>=0&&!truncate(boxname,lasttell)&&(logopened||verbose)) | ||
| 422 | + if(lasttell>=0&&trunced&&(logopened||verbose)) | ||
| 423 | nlog("Truncated file to former size\n"); /* undo garbage */ | ||
| 424 | ret0: return 0; | ||
| 425 | } | ||
| 426 | @@ -378,7 +385,8 @@ void readmail(rhead,tobesent)const long tobesent; | ||
| 427 | dfilled=mailread=0; | ||
| 428 | else if(rhead) /* only read in a new header */ | ||
| 429 | { memblk new; | ||
| 430 | - dfilled=mailread=0;makeblock(&new,0);readdyn(&new,&dfilled,0); | ||
| 431 | + dfilled=mailread=0;makeblock(&new,0); | ||
| 432 | + readdyn(&new,&dfilled,thebody-themail.p); | ||
| 433 | if(tobesent>dfilled&&isprivate) /* put it in place here */ | ||
| 434 | { tmemmove(themail.p+dfilled,thebody,filled-=tobesent); | ||
| 435 | tmemmove(themail.p,new.p,dfilled); | ||
| 436 | diff --git a/src/manconf.c b/src/manconf.c | ||
| 437 | index a9e9f1c..5c8ec36 100644 | ||
| 438 | --- a/src/manconf.c | ||
| 439 | +++ b/src/manconf.c | ||
| 440 | @@ -233,7 +233,7 @@ a security violation was found (e.g. \1.B \2-@PRESERVOPT@\1or variable\ | ||
| 441 | \2-@PRESERVOPT@\1and\1.BR \2-@FROMWHOPT@ .\1"); | ||
| 442 | pc("LMTPOPT",LMTPOPT); | ||
| 443 | #else | ||
| 444 | - ps("LMTPOPTdesc","");ps("LMTPusage",""); | ||
| 445 | + ps("LMTPOPTdesc","");ps("LMTPusage","\1"); | ||
| 446 | #endif | ||
| 447 | pname("INIT_UMASK",0);printf("0%lo/g\n",(unsigned long)INIT_UMASK);lines--; | ||
| 448 | pn("DEFlinebuf",DEFlinebuf); | ||
| 449 | diff --git a/src/memblk.c b/src/memblk.c | ||
| 450 | index e2f13f0..97e02d3 100644 | ||
| 451 | --- a/src/memblk.c | ||
| 452 | +++ b/src/memblk.c | ||
| 453 | @@ -51,11 +51,11 @@ void lockblock(mb)memblk*const mb; | ||
| 454 | { | ||
| 455 | #ifdef USE_MMAP | ||
| 456 | if(mb->fd>=0) | ||
| 457 | - { long len=mb->len+1; | ||
| 458 | - if(munmap(mb->p,len)) | ||
| 459 | - mmapfailed(len); /* don't want to continue here */ | ||
| 460 | - if((mb->p=mmap(0,len,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED) | ||
| 461 | - mmapfailed(len); | ||
| 462 | + { long mlen=mb->len+1; | ||
| 463 | + if(munmap(mb->p,mlen)) | ||
| 464 | + mmapfailed(mlen); /* don't want to continue here */ | ||
| 465 | + if((mb->p=mmap(0,mlen,PROT_READ,MAP_PRIVATE,mb->fd,(off_t)0))==MAP_FAILED) | ||
| 466 | + mmapfailed(mlen); | ||
| 467 | close(mb->fd); | ||
| 468 | mb->fd=ropen(devnull,O_RDWR,0); /* XXX Perhaps -1 is better? */ | ||
| 469 | } | ||
| 470 | @@ -77,8 +77,8 @@ int resizeblock(mb,len,nonfatal)memblk*const mb;const long len; | ||
| 471 | strcpy(filename,MMAP_DIR); | ||
| 472 | if(unique(filename,strchr(filename,'\0'),MMAP_FILE_LEN,MMAP_PERM,0,0)&& | ||
| 473 | (mb->fd=ropen(filename,O_RDWR,MMAP_PERM),unlink(filename),mb->fd>=0)) | ||
| 474 | - { mb->filelen=len; | ||
| 475 | - if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1)) | ||
| 476 | + { mb->filelen=len+1; | ||
| 477 | + if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1)) | ||
| 478 | dropf: { close(mb->fd);mb->fd= -1; | ||
| 479 | if(verbose)nlog("Unable to extend or use tempfile"); | ||
| 480 | } | ||
| 481 | @@ -98,9 +98,9 @@ dropf: { close(mb->fd);mb->fd= -1; | ||
| 482 | } | ||
| 483 | } | ||
| 484 | if(mb->fd>=0) | ||
| 485 | - { if(len>mb->filelen) /* need to extend? */ | ||
| 486 | - { mb->filelen=len; | ||
| 487 | - if(lseek(mb->fd,mb->filelen-1,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1)) | ||
| 488 | + { if(len>=mb->filelen) /* need to extend? */ | ||
| 489 | + { mb->filelen=len+1; | ||
| 490 | + if(lseek(mb->fd,len,SEEK_SET)<0||1!=rwrite(mb->fd,empty,1)) | ||
| 491 | { char*p=malloc(len+1); /* can't extend, switch to malloc */ | ||
| 492 | tmemmove(p,mb->p,mb->len); | ||
| 493 | munmap(mb->p,mb->len+1); | ||
| 494 | @@ -124,9 +124,9 @@ mmap: if((mb->p=mmap(0,len+1,P_RW,MAP_SHARED,mb->fd,(off_t)0))==MAP_FAILED) | ||
| 495 | } | ||
| 496 | else | ||
| 497 | mb->p=realloc(mb->p,len+1); | ||
| 498 | - mb->len=len+1; | ||
| 499 | - mb->p[len]='\0'; | ||
| 500 | + mb->len=len; | ||
| 501 | ret1: | ||
| 502 | + mb->p[len]='\0'; | ||
| 503 | return 1; | ||
| 504 | } | ||
| 505 | |||
| 506 | diff --git a/src/memblk.h b/src/memblk.h | ||
| 507 | index 6fd1d1d..b57f369 100644 | ||
| 508 | --- a/src/memblk.h | ||
| 509 | +++ b/src/memblk.h | ||
| 510 | @@ -1,6 +1,6 @@ | ||
| 511 | typedef struct memblk { | ||
| 512 | char*p; /* where it starts */ | ||
| 513 | - long len; /* currently allocated size */ | ||
| 514 | + long len; /* current size, not including trailing NUL */ | ||
| 515 | #ifdef USE_MMAP | ||
| 516 | off_t filelen; /* how long is the file */ | ||
| 517 | int fd; /* file which is mmap()ed */ | ||
| 518 | diff --git a/src/network.h b/src/network.h | ||
| 519 | index d7d08f2..b09b6c4 100644 | ||
| 520 | --- a/src/network.h | ||
| 521 | +++ b/src/network.h | ||
| 522 | @@ -1,19 +1,13 @@ | ||
| 523 | /*$Id: network.h,v 1.7 1997/04/02 03:15:41 srb Exp $*/ | ||
| 524 | |||
| 525 | -#include <sys/socket.h> /* socket() sendto() AF_INET | ||
| 526 | +#include <sys/socket.h> /* socket() sendto() */ | ||
| 527 | /* SOCK_DGRAM */ | ||
| 528 | -#include <netdb.h> /* gethostbyname() getservbyname() | ||
| 529 | - /* getprotobyname() */ | ||
| 530 | -#include <netinet/in.h> /* htons() struct sockaddr_in */ | ||
| 531 | +#include <netdb.h> /* getaddrinfo() */ | ||
| 532 | |||
| 533 | #ifndef BIFF_serviceport | ||
| 534 | #define BIFF_serviceport COMSATservice | ||
| 535 | #endif | ||
| 536 | |||
| 537 | -#ifndef h_0addr_list | ||
| 538 | -#define h_0addr_list h_addr_list[0] /* POSIX struct member */ | ||
| 539 | -#endif | ||
| 540 | - | ||
| 541 | #ifndef NO_const /* since network.h is outside the autoconf const check */ | ||
| 542 | #ifdef const /* loop, we need this backcheck for some systems */ | ||
| 543 | #undef const | ||
| 544 | diff --git a/src/pipes.c b/src/pipes.c | ||
| 545 | index 1fdb9e6..7754300 100644 | ||
| 546 | --- a/src/pipes.c | ||
| 547 | +++ b/src/pipes.c | ||
| 548 | @@ -145,7 +145,9 @@ int pipthrough(line,source,len)char*line,*source;const long len; | ||
| 549 | if(Stdout) | ||
| 550 | { *(eq=strchr(Stdout,'\0')-1)='\0'; /* chop the '=' */ | ||
| 551 | if(!(backblock=getenv(Stdout))) /* no current value? */ | ||
| 552 | - PRDB=PWRB= -1; | ||
| 553 | + { PRDB=PWRB= -1; | ||
| 554 | + backlen=0; | ||
| 555 | + } | ||
| 556 | else | ||
| 557 | { backlen=strlen(backblock); | ||
| 558 | goto pip; | ||
| 559 | @@ -155,9 +157,7 @@ int pipthrough(line,source,len)char*line,*source;const long len; | ||
| 560 | pip: rpipe(pbackfd); | ||
| 561 | rpipe(pinfd); /* main pipes setup */ | ||
| 562 | if(!(pidchild=sfork())) /* create a sending procmail */ | ||
| 563 | - { if(Stdout&&backblock) | ||
| 564 | - backlen=strlen(backblock); | ||
| 565 | - else | ||
| 566 | + { if(!Stdout) | ||
| 567 | backblock=source,backlen=len; | ||
| 568 | childsetup();rclose(PRDI);rclose(PRDB); | ||
| 569 | rpipe(poutfd);rclose(STDOUT); | ||
| 570 | @@ -194,7 +194,7 @@ perr: progerr(line,excode,pwait==4); /* I'm going to tell my mommy! */ | ||
| 571 | makeblock(&temp,Stdfilled); | ||
| 572 | tmemmove(temp.p,Stdout,Stdfilled); | ||
| 573 | readdyn(&temp,&Stdfilled,Stdfilled+backlen+1); | ||
| 574 | - Stdout=realloc(Stdout,&Stdfilled+1); | ||
| 575 | + Stdout=realloc(Stdout,Stdfilled+1); | ||
| 576 | tmemmove(Stdout,temp.p,Stdfilled+1); | ||
| 577 | freeblock(&temp); | ||
| 578 | retStdout(Stdout,pwait&&pipw,!backblock); | ||
| 579 | diff --git a/src/procmail.c b/src/procmail.c | ||
| 580 | index 4a232f2..2bb449b 100644 | ||
| 581 | --- a/src/procmail.c | ||
| 582 | +++ b/src/procmail.c | ||
| 583 | @@ -652,8 +652,7 @@ commint:do skipspace(); /* skip whitespace */ | ||
| 584 | nrcond= -1; | ||
| 585 | if(tolock) /* clear temporary buffer for lockfile name */ | ||
| 586 | free(tolock); | ||
| 587 | - for(i=maxindex(flags);i;i--) /* clear the flags */ | ||
| 588 | - flags[i]=0; | ||
| 589 | + bbzero(flags,sizeof(flags)); /* clear the flags */ | ||
| 590 | for(tolock=0,locknext=0;;) | ||
| 591 | { chp=skpspace(chp); | ||
| 592 | switch(i= *chp++) | ||
| 593 | diff --git a/src/recommend.c b/src/recommend.c | ||
| 594 | index 5d41e01..9002268 100644 | ||
| 595 | --- a/src/recommend.c | ||
| 596 | +++ b/src/recommend.c | ||
| 597 | @@ -47,7 +47,7 @@ int main(argc,argv)const int argc;const char*const argv[]; | ||
| 598 | printf("chmod %lo %s\n",(unsigned long)(sgid|PERMIS),argv[2]); | ||
| 599 | else if(chmdir==1) | ||
| 600 | goto nogchmod; | ||
| 601 | - if(chmdir) | ||
| 602 | + if(0) | ||
| 603 | printf("chmod %c+w %s/.\n",chmdir==1?'g':'a',mailspooldir); | ||
| 604 | nogchmod: | ||
| 605 | return EXIT_SUCCESS; | ||
| 606 | -- | ||
| 607 | 1.8.4.2 | ||
| 608 | |||
diff --git a/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-man-file.patch b/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-man-file.patch deleted file mode 100644 index 78ac6241d0..0000000000 --- a/meta-oe/recipes-support/procmail/procmail/from-debian-to-fix-man-file.patch +++ /dev/null | |||
| @@ -1,85 +0,0 @@ | |||
| 1 | From 3cbc5e6e624235f9ba40cfd5a2b18c11be371399 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Li xin <lixin.fnst@cn.fujitsu.com> | ||
| 3 | Date: Tue, 2 Dec 2014 07:02:01 +0900 | ||
| 4 | Subject: [PATCH 2/3] From debian to fix man file | ||
| 5 | |||
| 6 | Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com> | ||
| 7 | --- | ||
| 8 | Upstream-Status: Pending | ||
| 9 | |||
| 10 | man/procmail.man | 24 +++++++++++++++++------- | ||
| 11 | man/procmailrc.man | 2 +- | ||
| 12 | 2 files changed, 18 insertions(+), 8 deletions(-) | ||
| 13 | |||
| 14 | diff --git a/man/procmail.man b/man/procmail.man | ||
| 15 | index 175043a..1274ce8 100644 | ||
| 16 | --- a/man/procmail.man | ||
| 17 | +++ b/man/procmail.man | ||
| 18 | @@ -44,11 +44,11 @@ at the end. | ||
| 19 | should be invoked automatically over the | ||
| 20 | .B @DOT_FORWARD@ | ||
| 21 | file mechanism as soon as mail arrives. Alternatively, when installed by | ||
| 22 | -a system administrator, it can be invoked from within the mailer immediately. | ||
| 23 | -When invoked, it first sets some environment variables to default values, | ||
| 24 | -reads the mail message from stdin until an EOF, separates the body from the | ||
| 25 | -header, and then, if no command line arguments are present, it starts to look | ||
| 26 | -for a file named | ||
| 27 | +a system administrator (and in the standard Red Hat Linux configuration), it | ||
| 28 | +can be invoked from within the mailer immediately. When invoked, it | ||
| 29 | +first sets some environment variables to default values, reads the mail message from | ||
| 30 | +stdin until an EOF, separates the body from the header, and then, if no command line | ||
| 31 | +arguments are present, it starts to look for a file named | ||
| 32 | .BR @PROCMAILRC@ . | ||
| 33 | According to the processing recipes in this file, | ||
| 34 | the mail message that just arrived gets distributed into the right folder | ||
| 35 | @@ -166,7 +166,8 @@ must be specified on the command line. After the rcfile, procmail will | ||
| 36 | accept an unlimited number of arguments.@ETCRCS_desc@ | ||
| 37 | For some advanced usage of this option you should look in the | ||
| 38 | .B EXAMPLES | ||
| 39 | -section below.@LMTPOPTdesc@.SH ARGUMENTS | ||
| 40 | +section below.@LMTPOPTdesc@ | ||
| 41 | +.SH ARGUMENTS | ||
| 42 | Any arguments containing an '=' are considered to be environment variable | ||
| 43 | assignments, they will | ||
| 44 | .I all | ||
| 45 | @@ -723,6 +724,15 @@ path.@FW_comment@ | ||
| 46 | .fi | ||
| 47 | .ad | ||
| 48 | .PP | ||
| 49 | +Some mailers (notably exim) do not currently accept the above syntax. | ||
| 50 | +In such case use this instead: | ||
| 51 | +.PP | ||
| 52 | +.na | ||
| 53 | +.nf | ||
| 54 | +|/usr/bin/procmail | ||
| 55 | +.fi | ||
| 56 | +.ad | ||
| 57 | +.PP | ||
| 58 | Procmail can also be invoked to postprocess an already filled system | ||
| 59 | mailbox. This can be useful if you don't want to or can't use a | ||
| 60 | $HOME/@DOT_FORWARD@ file (in which case the following script could | ||
| 61 | @@ -754,7 +764,7 @@ exit 0 | ||
| 62 | .SS "A sample small @PROCMAILRC@:" | ||
| 63 | .na | ||
| 64 | .nf | ||
| 65 | -PATH=/bin:/usr/bin:@BINDIR@ | ||
| 66 | +PATH=/usr/local/bin:/usr/bin:/bin | ||
| 67 | MAILDIR=$HOME/Mail #you'd better make sure it exists | ||
| 68 | DEFAULT=$MAILDIR/mbox #completely optional | ||
| 69 | LOGFILE=$MAILDIR/from #recommended | ||
| 70 | diff --git a/man/procmailrc.man b/man/procmailrc.man | ||
| 71 | index 472035f..7bf08dd 100644 | ||
| 72 | --- a/man/procmailrc.man | ||
| 73 | +++ b/man/procmailrc.man | ||
| 74 | @@ -779,7 +779,7 @@ one trailing newline will be stripped. | ||
| 75 | .PP | ||
| 76 | Some non-optimal and non-obvious regexps set MATCH to an incorrect | ||
| 77 | value. The regexp can be made to work by removing one or more unneeded | ||
| 78 | -'*', '+', or '?' operator on the left-hand side of the \e/ token. | ||
| 79 | +\&'*', '+', or '?' operator on the left-hand side of the \e/ token. | ||
| 80 | .SH MISCELLANEOUS | ||
| 81 | If the regular expression contains `\fB@TO_key@\fP' it will be substituted by | ||
| 82 | .na | ||
| 83 | -- | ||
| 84 | 1.8.4.2 | ||
| 85 | |||
diff --git a/meta-oe/recipes-support/procmail/procmail/from-debian-to-modify-parameters.patch b/meta-oe/recipes-support/procmail/procmail/from-debian-to-modify-parameters.patch deleted file mode 100644 index 2bebccc0b2..0000000000 --- a/meta-oe/recipes-support/procmail/procmail/from-debian-to-modify-parameters.patch +++ /dev/null | |||
| @@ -1,129 +0,0 @@ | |||
| 1 | From 95c742242769721f963c50702e1445fb70c6a45a Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Li xin <lixin.fnst@cn.fujitsu.com> | ||
| 3 | Date: Tue, 2 Dec 2014 07:07:33 +0900 | ||
| 4 | Subject: [PATCH 3/3] From debian to modify parameters | ||
| 5 | |||
| 6 | Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com> | ||
| 7 | --- | ||
| 8 | Upstream-Status: Pending | ||
| 9 | |||
| 10 | Makefile | 16 ++++++++-------- | ||
| 11 | config.h | 13 +++++++------ | ||
| 12 | 2 files changed, 15 insertions(+), 14 deletions(-) | ||
| 13 | |||
| 14 | diff --git a/Makefile b/Makefile | ||
| 15 | index 1e9568c..9e48201 100644 | ||
| 16 | --- a/Makefile | ||
| 17 | +++ b/Makefile | ||
| 18 | @@ -23,7 +23,7 @@ MAN5DIR = $(MANDIR)/man$(MAN5SUFFIX) | ||
| 19 | |||
| 20 | # Uncomment to install compressed man pages (possibly add extra suffix | ||
| 21 | # to the definitions of MAN?DIR and/or MAN?SUFFIX by hand) | ||
| 22 | -#MANCOMPRESS = compress | ||
| 23 | +# MANCOMPRESS = compress | ||
| 24 | |||
| 25 | ############################*# | ||
| 26 | # Things that can be made are: | ||
| 27 | @@ -55,7 +55,7 @@ MAN5DIR = $(MANDIR)/man$(MAN5SUFFIX) | ||
| 28 | |||
| 29 | LOCKINGTEST=__defaults__ | ||
| 30 | |||
| 31 | -#LOCKINGTEST=/tmp . # Uncomment and add any directories you see fit. | ||
| 32 | +LOCKINGTEST=/tmp . # Uncomment and add any directories you see fit. | ||
| 33 | # If LOCKINGTEST is defined, autoconf will NOT | ||
| 34 | # prompt you to enter additional directories. | ||
| 35 | # See INSTALL for more information about the | ||
| 36 | @@ -65,7 +65,7 @@ LOCKINGTEST=__defaults__ | ||
| 37 | # Only edit below this line if you *think* you know what you are doing # | ||
| 38 | ######################################################################## | ||
| 39 | |||
| 40 | -#LOCKINGTEST=100 # Uncomment (and change) if you think you know | ||
| 41 | +LOCKINGTEST=100 # Uncomment (and change) if you think you know | ||
| 42 | # it better than the autoconf lockingtests. | ||
| 43 | # This will cause the lockingtests to be hotwired. | ||
| 44 | # 100 to enable fcntl() | ||
| 45 | @@ -74,20 +74,20 @@ LOCKINGTEST=__defaults__ | ||
| 46 | # Or them together to get the desired combination. | ||
| 47 | |||
| 48 | # Optional system libraries we search for | ||
| 49 | -SEARCHLIBS = -lm -ldir -lx -lsocket -lnet -linet -lnsl_s -lnsl_i -lnsl -lsun \ | ||
| 50 | - -lgen -lsockdns -ldl | ||
| 51 | +SEARCHLIBS = -lm -ldir -lx -lsocket -lnet -linet -lnsl_s -lnsl_i -lsun \ | ||
| 52 | + -lgen -lsockdns | ||
| 53 | # -lresolv # not really needed, is it? | ||
| 54 | |||
| 55 | # Informal list of directories where we look for the libraries in SEARCHLIBS | ||
| 56 | -LIBPATHS=/lib /usr/lib /usr/local/lib | ||
| 57 | +LIBPATHS=/lib /usr/lib | ||
| 58 | |||
| 59 | GCC_WARNINGS = -O2 -pedantic -Wreturn-type -Wunused -Wformat -Wtraditional \ | ||
| 60 | -Wpointer-arith -Wconversion -Waggregate-return \ | ||
| 61 | #-Wimplicit -Wshadow -Wid-clash-6 #-Wuninitialized | ||
| 62 | |||
| 63 | # The place to put your favourite extra cc flag | ||
| 64 | -CFLAGS0 = -O #$(GCC_WARNINGS) | ||
| 65 | -LDFLAGS0= -s | ||
| 66 | +CFLAGS0 = $(RPM_OPT_FLAGS) #$(GCC_WARNINGS) | ||
| 67 | +LDFLAGS0= | ||
| 68 | # Read my libs :-) | ||
| 69 | LIBS= | ||
| 70 | |||
| 71 | diff --git a/config.h b/config.h | ||
| 72 | index c4135a9..a07453f 100644 | ||
| 73 | --- a/config.h | ||
| 74 | +++ b/config.h | ||
| 75 | @@ -35,7 +35,8 @@ | ||
| 76 | */ | ||
| 77 | /*#define DEFSPATH "PATH=/bin:/usr/bin" /* */ | ||
| 78 | /*#define DEFPATH "PATH=$HOME/bin:/bin:/usr/bin" /* */ | ||
| 79 | - | ||
| 80 | +#define DEFPATH "PATH=$HOME/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin" /* */ | ||
| 81 | + | ||
| 82 | /* every environment variable appearing in PRESTENV will be set or wiped | ||
| 83 | * out of the environment (variables without an '=' sign will be thrown | ||
| 84 | * out), e.g. you could define PRESTENV as follows: | ||
| 85 | @@ -46,13 +47,13 @@ | ||
| 86 | */ | ||
| 87 | #define PRESTENV {"IFS","ENV","PWD",0} | ||
| 88 | |||
| 89 | -/*#define GROUP_PER_USER /* uncomment this if each | ||
| 90 | +#define GROUP_PER_USER /* uncomment this if each | ||
| 91 | user has his or her own | ||
| 92 | group and procmail can therefore trust a $HOME/.procmailrc that | ||
| 93 | is group writable or contained in a group writable home directory | ||
| 94 | if the group involved is the user's default group. */ | ||
| 95 | |||
| 96 | -/*#define LMTP /* uncomment this if you | ||
| 97 | +#define LMTP /* uncomment this if you | ||
| 98 | want to use procmail | ||
| 99 | as an LMTP (rfc2033) server, presumably for invocation by an MTA. | ||
| 100 | The file examples/local_procmail_lmtp.m4 contains info on how to | ||
| 101 | @@ -79,7 +80,7 @@ | ||
| 102 | |||
| 103 | /*#define NO_fcntl_LOCK /* uncomment any of these three if you */ | ||
| 104 | /*#define NO_lockf_LOCK /* definitely do not want procmail to make */ | ||
| 105 | -/*#define NO_flock_LOCK /* use of those kernel-locking methods */ | ||
| 106 | +#define NO_flock_LOCK /* use of those kernel-locking methods */ | ||
| 107 | /* If you set LOCKINGTEST to a binary number | ||
| 108 | than there's no need to set these. These #defines are only useful | ||
| 109 | if you want to disable particular locking styles but are unsure which | ||
| 110 | @@ -91,14 +92,14 @@ | ||
| 111 | restriction does not apply to the /etc/procmailrc and | ||
| 112 | /etc/procmailrcs files) */ | ||
| 113 | |||
| 114 | -/*#define NO_NFS_ATIME_HACK /* uncomment if you're definitely not using | ||
| 115 | +#define NO_NFS_ATIME_HACK /* uncomment if you're definitely not using | ||
| 116 | NFS mounted filesystems and can't afford | ||
| 117 | procmail to sleep for 1 sec. before writing to an empty regular | ||
| 118 | mailbox. This lets programs correctly judge whether there is unread | ||
| 119 | mail present. procmail automatically suppresses this when it isn't | ||
| 120 | needed or under heavy load. */ | ||
| 121 | |||
| 122 | -/*#define DEFsendmail "/usr/sbin/sendmail" /* uncomment and/or change if | ||
| 123 | +#define DEFsendmail "/usr/sbin/sendmail" /* uncomment and/or change if | ||
| 124 | the autoconfigured default | ||
| 125 | SENDMAIL is not suitable. This program should quack like a sendmail: | ||
| 126 | it should accept the -oi flag (to tell it to _not_ treat a line | ||
| 127 | -- | ||
| 128 | 1.8.4.2 | ||
| 129 | |||
diff --git a/meta-oe/recipes-support/procmail/procmail/gcc14.patch b/meta-oe/recipes-support/procmail/procmail/gcc14.patch deleted file mode 100644 index 5ca56fa006..0000000000 --- a/meta-oe/recipes-support/procmail/procmail/gcc14.patch +++ /dev/null | |||
| @@ -1,127 +0,0 @@ | |||
| 1 | From: Santiago Vila <sanvila@debian.org> | ||
| 2 | Subject: Fix build with gcc-14 | ||
| 3 | Bug-Debian: https://bugs.debian.org/1075398 | ||
| 4 | |||
| 5 | Upstream-Status: Pending | ||
| 6 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 7 | --- a/initmake | ||
| 8 | +++ b/initmake | ||
| 9 | @@ -124,7 +124,7 @@ else | ||
| 10 | fi | ||
| 11 | |||
| 12 | cat >_autotst.c <<HERE | ||
| 13 | -main() | ||
| 14 | +int main() | ||
| 15 | { return 0; | ||
| 16 | } | ||
| 17 | HERE | ||
| 18 | @@ -200,7 +200,7 @@ cat >_autotst.c <<HERE | ||
| 19 | #include <sys/types.h> | ||
| 20 | #include <stdio.h> | ||
| 21 | #include <sys/stat.h> | ||
| 22 | -main() | ||
| 23 | +int main() | ||
| 24 | { struct stat buf;return!&buf; | ||
| 25 | } | ||
| 26 | HERE | ||
| 27 | --- a/src/autoconf | ||
| 28 | +++ b/src/autoconf | ||
| 29 | @@ -414,6 +414,12 @@ cat >_autotst.c <<HERE | ||
| 30 | int dolock,child[NR_of_forks],timeout,fdcollect; | ||
| 31 | char dirlocktest[]="_locktest"; | ||
| 32 | |||
| 33 | +#include <stdlib.h> | ||
| 34 | +int killchildren(); | ||
| 35 | +int fdlock(int fd); | ||
| 36 | +int sfdlock(int fd); | ||
| 37 | +int fdunlock(); | ||
| 38 | + | ||
| 39 | void stimeout() | ||
| 40 | { timeout=1;close(fdcollect);killchildren(); | ||
| 41 | } | ||
| 42 | @@ -435,7 +441,7 @@ unsigned sfork() | ||
| 43 | return pid; | ||
| 44 | } | ||
| 45 | |||
| 46 | -int main(argc,argv)char*argv[]; | ||
| 47 | +int main(int argc,char*argv[]) | ||
| 48 | { int goodlock,testlock,i,pip[2],pipw[2];time_t otimet;unsigned dtimet; | ||
| 49 | static char filename[]="_locktst.l0"; | ||
| 50 | close(0);goodlock=0;testlock=FIRST_lock;signal(SIGPIPE,SIG_DFL); | ||
| 51 | @@ -585,13 +591,13 @@ int killchildren() | ||
| 52 | return 0; | ||
| 53 | } | ||
| 54 | |||
| 55 | -int sfdlock(fd) | ||
| 56 | +int sfdlock(int fd) | ||
| 57 | { int i;unsigned gobble[GOBBLE>>2]; | ||
| 58 | for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ | ||
| 59 | return fdlock(fd); | ||
| 60 | } | ||
| 61 | |||
| 62 | -static oldfdlock; | ||
| 63 | +static int oldfdlock; | ||
| 64 | #ifdef F_SETLKW | ||
| 65 | static struct flock flck; /* why can't it be a local variable? */ | ||
| 66 | #endif | ||
| 67 | @@ -599,7 +605,7 @@ static struct flock flck; /* why can't | ||
| 68 | static off_t oldlockoffset; | ||
| 69 | #endif | ||
| 70 | |||
| 71 | -int fdlock(fd) | ||
| 72 | +int fdlock(int fd) | ||
| 73 | { int i;unsigned gobble[GOBBLE>>2]; | ||
| 74 | for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ | ||
| 75 | oldfdlock=fd;fd=0; | ||
| 76 | @@ -993,11 +999,11 @@ int main(){int i;i=1; | ||
| 77 | i+=WIFEXITED(i); | ||
| 78 | i+=WIFSTOPPED(i); | ||
| 79 | i+=WEXITSTATUS(i); | ||
| 80 | - i+=WSIGTERM(i); | ||
| 81 | + i+=WTERMSIG(i); | ||
| 82 | return i;} | ||
| 83 | HERE | ||
| 84 | |||
| 85 | -echo 'Testing for WIFEXITED(), WIFSTOPPED(), WEXITSTATUS() & WSIGTERM()' | ||
| 86 | +echo 'Testing for WIFEXITED(), WIFSTOPPED(), WEXITSTATUS() & WTERMSIG()' | ||
| 87 | if $MAKE _autotst.$O >_autotst.rrr 2>&1 | ||
| 88 | then | ||
| 89 | $FGREP -v include/ <_autotst.rrr >_autotst.$O | ||
| 90 | @@ -1029,6 +1035,8 @@ cat >_autotst.c <<HERE | ||
| 91 | #ifndef NO_COMSAT | ||
| 92 | #include "network.h" | ||
| 93 | #endif | ||
| 94 | +int setrgid(); | ||
| 95 | +int setresgid(); | ||
| 96 | int main(){char a[2]; | ||
| 97 | endpwent();endgrent();memmove(a,"0",1);bcopy("0",a,1);strcspn(a,"0"); | ||
| 98 | strtol("0",(char**)0,10);strchr("0",'0');strpbrk(a,"0");rename(a,"0"); | ||
| 99 | @@ -1059,7 +1067,7 @@ echo 'Testing for memmove, strchr, strpb | ||
| 100 | echo ' rename, setrgid, setegid, pow, opendir, mkdir, waitpid, fsync,' | ||
| 101 | echo ' ftruncate, strtod, strncasecmp, strerror, strlcat,' | ||
| 102 | echo ' memset, bzero, and _exit' | ||
| 103 | -if $MAKE _autotst.$O >$DEVNULL 2>&1 | ||
| 104 | +if $MAKE _autotst.$O >_autotst.rrr 2>&1 | ||
| 105 | then | ||
| 106 | : | ||
| 107 | else | ||
| 108 | @@ -1196,7 +1204,7 @@ unsigned long dobench(strstr,iter,haysta | ||
| 109 | return (unsigned long)clock()-to; | ||
| 110 | } | ||
| 111 | #endif | ||
| 112 | -int main(argc,argv)int argc;const char*argv[]; | ||
| 113 | +int main(int argc,const char*argv[]) | ||
| 114 | { if(argc==1) | ||
| 115 | { char*haystack; | ||
| 116 | #ifdef BENCHSIZE | ||
| 117 | --- a/src/mailfold.c | ||
| 118 | +++ b/src/mailfold.c | ||
| 119 | @@ -378,7 +378,7 @@ void concon(ch)const int ch; /* flip b | ||
| 120 | } | ||
| 121 | } | ||
| 122 | |||
| 123 | -void readmail(rhead,tobesent)const long tobesent; | ||
| 124 | +void readmail(int rhead,const long tobesent) | ||
| 125 | { char*chp,*pastend;static size_t contlengthoffset; | ||
| 126 | ;{ long dfilled; | ||
| 127 | if(rhead==2) /* already read, just examine what we have */ | ||
diff --git a/meta-oe/recipes-support/procmail/procmail/man-file-mailstat.1-from-debian.patch b/meta-oe/recipes-support/procmail/procmail/man-file-mailstat.1-from-debian.patch deleted file mode 100644 index 72fa27a834..0000000000 --- a/meta-oe/recipes-support/procmail/procmail/man-file-mailstat.1-from-debian.patch +++ /dev/null | |||
| @@ -1,62 +0,0 @@ | |||
| 1 | From 8ac56108e5f0a72d1bec0fb4f1fa4763a2479331 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Li xin <lixin.fnst@cn.fujitsu.com> | ||
| 3 | Date: Tue, 2 Dec 2014 06:56:14 +0900 | ||
| 4 | Subject: [PATCH] man file mailstat.1 from debian | ||
| 5 | |||
| 6 | Signed-off-by: Li Xin <lixin.fnst@cn.fujitsu.com> | ||
| 7 | --- | ||
| 8 | Upstream-Status: Pending | ||
| 9 | |||
| 10 | debian/mailstat.1 | 40 ++++++++++++++++++++++++++++++++++++++++ | ||
| 11 | 1 file changed, 40 insertions(+) | ||
| 12 | create mode 100644 debian/mailstat.1 | ||
| 13 | |||
| 14 | diff --git a/debian/mailstat.1 b/debian/mailstat.1 | ||
| 15 | new file mode 100644 | ||
| 16 | index 0000000..f13265a | ||
| 17 | --- /dev/null | ||
| 18 | +++ b/debian/mailstat.1 | ||
| 19 | @@ -0,0 +1,40 @@ | ||
| 20 | +.TH MAILSTAT 1 | ||
| 21 | +.SH NAME | ||
| 22 | +mailstat \- shows mail-arrival statistics | ||
| 23 | +.SH SYNOPSIS | ||
| 24 | +.B mailstat | ||
| 25 | +[\-klmots] [logfile] | ||
| 26 | +.SH DESCRIPTION | ||
| 27 | +.B mailstat | ||
| 28 | +parses a procmail-generated $LOGFILE and displays | ||
| 29 | +a summary about the messages delivered to all folders | ||
| 30 | +(total size, average size, nr of messages). | ||
| 31 | +The $LOGFILE is truncated to zero length, unless the | ||
| 32 | +.B -k | ||
| 33 | +option is used. | ||
| 34 | +Exit code 0 if mail arrived, 1 if no mail arrived. | ||
| 35 | +.SH OPTIONS | ||
| 36 | +.TP | ||
| 37 | +.I \-k | ||
| 38 | +keep logfile intact | ||
| 39 | +.TP | ||
| 40 | +.I \-l | ||
| 41 | +long display format | ||
| 42 | +.TP | ||
| 43 | +.I \-m | ||
| 44 | +merge any errors into one line | ||
| 45 | +.TP | ||
| 46 | +.I \-o | ||
| 47 | +use the old logfile | ||
| 48 | +.TP | ||
| 49 | +.I \-t | ||
| 50 | +terse display format | ||
| 51 | +.TP | ||
| 52 | +.I \-s | ||
| 53 | +silent in case of no mail | ||
| 54 | +.SH NOTES | ||
| 55 | +Customise to your heart's content, this program is only provided as a | ||
| 56 | +guideline. | ||
| 57 | +.SH AUTHOR | ||
| 58 | +This manual page was written by Santiago Vila <sanvila@debian.org> | ||
| 59 | +for the Debian GNU/Linux distribution (but may be used by others). | ||
| 60 | -- | ||
| 61 | 1.8.4.2 | ||
| 62 | |||
diff --git a/meta-oe/recipes-support/procmail/procmail/procmail-3.24-consolidated_fixes-1.patch b/meta-oe/recipes-support/procmail/procmail/procmail-3.24-consolidated_fixes-1.patch new file mode 100644 index 0000000000..79cff4ae59 --- /dev/null +++ b/meta-oe/recipes-support/procmail/procmail/procmail-3.24-consolidated_fixes-1.patch | |||
| @@ -0,0 +1,253 @@ | |||
| 1 | Submitted By: Douglas R. Reno <renodr at linuxfromscratch dot org> | ||
| 2 | Date: 2024-06-05 | ||
| 3 | Initial Package Version: 3.24 | ||
| 4 | Upstream Status: Submitted | ||
| 5 | Origin: Fedora | ||
| 6 | Description: Fixes building procmail-3.24 with gcc-14. This includes | ||
| 7 | several C99 portability fixes. | ||
| 8 | |||
| 9 | Upstream-Status: Pending | ||
| 10 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
| 11 | |||
| 12 | diff --git a/initmake b/initmake | ||
| 13 | index b901add..703d651 100755 | ||
| 14 | --- a/initmake | ||
| 15 | +++ b/initmake | ||
| 16 | @@ -124,7 +124,7 @@ else | ||
| 17 | fi | ||
| 18 | |||
| 19 | cat >_autotst.c <<HERE | ||
| 20 | -main() | ||
| 21 | +int main() | ||
| 22 | { return 0; | ||
| 23 | } | ||
| 24 | HERE | ||
| 25 | @@ -200,7 +200,7 @@ cat >_autotst.c <<HERE | ||
| 26 | #include <sys/types.h> | ||
| 27 | #include <stdio.h> | ||
| 28 | #include <sys/stat.h> | ||
| 29 | -main() | ||
| 30 | +int main() | ||
| 31 | { struct stat buf;return!&buf; | ||
| 32 | } | ||
| 33 | HERE | ||
| 34 | diff --git a/src/autoconf b/src/autoconf | ||
| 35 | index deb97c1..c3f2576 100755 | ||
| 36 | --- a/src/autoconf | ||
| 37 | +++ b/src/autoconf | ||
| 38 | @@ -361,6 +361,7 @@ cat >_autotst.c <<HERE | ||
| 39 | #include <unistd.h> /* getpid() getppid() */ | ||
| 40 | #endif | ||
| 41 | #include <stdio.h> | ||
| 42 | +#include <stdlib.h> | ||
| 43 | #include <time.h> | ||
| 44 | #include <fcntl.h> | ||
| 45 | #include <signal.h> /* SIGKILL */ | ||
| 46 | @@ -414,6 +415,16 @@ cat >_autotst.c <<HERE | ||
| 47 | int dolock,child[NR_of_forks],timeout,fdcollect; | ||
| 48 | char dirlocktest[]="_locktest"; | ||
| 49 | |||
| 50 | +int killchildren() | ||
| 51 | +{ int i; | ||
| 52 | + i=NR_of_forks; | ||
| 53 | + do | ||
| 54 | + if(child[--i]>0) | ||
| 55 | + kill(child[i],SIGTERM),child[i]=0; | ||
| 56 | + while(i); | ||
| 57 | + return 0; | ||
| 58 | +} | ||
| 59 | + | ||
| 60 | void stimeout() | ||
| 61 | { timeout=1;close(fdcollect);killchildren(); | ||
| 62 | } | ||
| 63 | @@ -435,7 +446,79 @@ unsigned sfork() | ||
| 64 | return pid; | ||
| 65 | } | ||
| 66 | |||
| 67 | -int main(argc,argv)char*argv[]; | ||
| 68 | +static int oldfdlock; | ||
| 69 | +#ifdef F_SETLKW | ||
| 70 | +static struct flock flck; /* why can't it be a local variable? */ | ||
| 71 | +#endif | ||
| 72 | +#ifdef F_LOCK | ||
| 73 | +static off_t oldlockoffset; | ||
| 74 | +#endif | ||
| 75 | + | ||
| 76 | +int fdlock(int fd) | ||
| 77 | +{ int i;unsigned gobble[GOBBLE>>2]; | ||
| 78 | + for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ | ||
| 79 | + oldfdlock=fd;fd=0; | ||
| 80 | + if(MSK_fcntl&dolock) | ||
| 81 | +#ifdef F_SETLKW | ||
| 82 | + { static unsigned extra; | ||
| 83 | + flck.l_type=F_WRLCK;flck.l_whence=SEEK_SET;flck.l_start=tell(oldfdlock); | ||
| 84 | + if(!extra--) | ||
| 85 | + extra=MIN_locks/4,flck.l_len=2,i|=fcntl(oldfdlock,F_SETLK,&flck); | ||
| 86 | + flck.l_len=0;fd|=fcntl(oldfdlock,F_SETLKW,&flck); | ||
| 87 | + } | ||
| 88 | +#else | ||
| 89 | + fd=1; | ||
| 90 | +#endif | ||
| 91 | + if(MSK_lockf&dolock) | ||
| 92 | +#ifdef F_LOCK | ||
| 93 | + oldlockoffset=tell(oldfdlock),fd|=lockf(oldfdlock,F_LOCK,(off_t)0); | ||
| 94 | +#else | ||
| 95 | + fd=1; | ||
| 96 | +#endif | ||
| 97 | + if(MSK_flock&dolock) | ||
| 98 | +#ifdef LOCK_EX | ||
| 99 | + fd|=flock(oldfdlock,LOCK_EX); | ||
| 100 | +#else | ||
| 101 | + fd=1; | ||
| 102 | +#endif | ||
| 103 | + return fd; | ||
| 104 | +} | ||
| 105 | + | ||
| 106 | +int sfdlock(int fd) | ||
| 107 | +{ int i;unsigned gobble[GOBBLE>>2]; | ||
| 108 | + for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ | ||
| 109 | + return fdlock(fd); | ||
| 110 | +} | ||
| 111 | + | ||
| 112 | +int fdunlock() | ||
| 113 | +{ int i;unsigned gobble[GOBBLE]; | ||
| 114 | + for(i=GOBBLE;i;gobble[--i]=~(unsigned)0); /* some SunOS libs mess this up */ | ||
| 115 | + if(MSK_flock&dolock) | ||
| 116 | +#ifdef LOCK_EX | ||
| 117 | + i|=flock(oldfdlock,LOCK_UN); | ||
| 118 | +#else | ||
| 119 | + i=1; | ||
| 120 | +#endif | ||
| 121 | + if(MSK_lockf&dolock) | ||
| 122 | +#ifdef F_LOCK | ||
| 123 | + { lseek(oldfdlock,oldlockoffset,SEEK_SET); | ||
| 124 | + i|=lockf(oldfdlock,F_LOCK,(off_t)2);i|=lockf(oldfdlock,F_ULOCK,(off_t)0); | ||
| 125 | + } | ||
| 126 | +#else | ||
| 127 | + i=1; | ||
| 128 | +#endif | ||
| 129 | + if(MSK_fcntl&dolock) | ||
| 130 | +#ifdef F_SETLKW | ||
| 131 | + flck.l_type=F_UNLCK,flck.l_len=0,i|=fcntl(oldfdlock,F_SETLK,&flck); | ||
| 132 | +#else | ||
| 133 | + i=1; | ||
| 134 | +#endif | ||
| 135 | + if(!i) | ||
| 136 | + for(i=GOBBLE;i&&gobble[--i]==~(unsigned)0;); | ||
| 137 | + return i; | ||
| 138 | +} | ||
| 139 | + | ||
| 140 | +int main(argc,argv)int argc;char*argv[]; | ||
| 141 | { int goodlock,testlock,i,pip[2],pipw[2];time_t otimet;unsigned dtimet; | ||
| 142 | static char filename[]="_locktst.l0"; | ||
| 143 | close(0);goodlock=0;testlock=FIRST_lock;signal(SIGPIPE,SIG_DFL); | ||
| 144 | @@ -574,88 +657,6 @@ skip_tests: | ||
| 145 | puts("Kernel-locking tests completed.");fprintf(stderr,"\n"); | ||
| 146 | return EXIT_SUCCESS; | ||
| 147 | } | ||
| 148 | - | ||
| 149 | -int killchildren() | ||
| 150 | -{ int i; | ||
| 151 | - i=NR_of_forks; | ||
| 152 | - do | ||
| 153 | - if(child[--i]>0) | ||
| 154 | - kill(child[i],SIGTERM),child[i]=0; | ||
| 155 | - while(i); | ||
| 156 | - return 0; | ||
| 157 | -} | ||
| 158 | - | ||
| 159 | -int sfdlock(fd) | ||
| 160 | -{ int i;unsigned gobble[GOBBLE>>2]; | ||
| 161 | - for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ | ||
| 162 | - return fdlock(fd); | ||
| 163 | -} | ||
| 164 | - | ||
| 165 | -static oldfdlock; | ||
| 166 | -#ifdef F_SETLKW | ||
| 167 | -static struct flock flck; /* why can't it be a local variable? */ | ||
| 168 | -#endif | ||
| 169 | -#ifdef F_LOCK | ||
| 170 | -static off_t oldlockoffset; | ||
| 171 | -#endif | ||
| 172 | - | ||
| 173 | -int fdlock(fd) | ||
| 174 | -{ int i;unsigned gobble[GOBBLE>>2]; | ||
| 175 | - for(i=GOBBLE>>2;i;gobble[--i]=~(unsigned)0); /* SunOS crash test */ | ||
| 176 | - oldfdlock=fd;fd=0; | ||
| 177 | - if(MSK_fcntl&dolock) | ||
| 178 | -#ifdef F_SETLKW | ||
| 179 | - { static unsigned extra; | ||
| 180 | - flck.l_type=F_WRLCK;flck.l_whence=SEEK_SET;flck.l_start=tell(oldfdlock); | ||
| 181 | - if(!extra--) | ||
| 182 | - extra=MIN_locks/4,flck.l_len=2,i|=fcntl(oldfdlock,F_SETLK,&flck); | ||
| 183 | - flck.l_len=0;fd|=fcntl(oldfdlock,F_SETLKW,&flck); | ||
| 184 | - } | ||
| 185 | -#else | ||
| 186 | - fd=1; | ||
| 187 | -#endif | ||
| 188 | - if(MSK_lockf&dolock) | ||
| 189 | -#ifdef F_LOCK | ||
| 190 | - oldlockoffset=tell(oldfdlock),fd|=lockf(oldfdlock,F_LOCK,(off_t)0); | ||
| 191 | -#else | ||
| 192 | - fd=1; | ||
| 193 | -#endif | ||
| 194 | - if(MSK_flock&dolock) | ||
| 195 | -#ifdef LOCK_EX | ||
| 196 | - fd|=flock(oldfdlock,LOCK_EX); | ||
| 197 | -#else | ||
| 198 | - fd=1; | ||
| 199 | -#endif | ||
| 200 | - return fd; | ||
| 201 | -} | ||
| 202 | - | ||
| 203 | -int fdunlock() | ||
| 204 | -{ int i;unsigned gobble[GOBBLE]; | ||
| 205 | - for(i=GOBBLE;i;gobble[--i]=~(unsigned)0); /* some SunOS libs mess this up */ | ||
| 206 | - if(MSK_flock&dolock) | ||
| 207 | -#ifdef LOCK_EX | ||
| 208 | - i|=flock(oldfdlock,LOCK_UN); | ||
| 209 | -#else | ||
| 210 | - i=1; | ||
| 211 | -#endif | ||
| 212 | - if(MSK_lockf&dolock) | ||
| 213 | -#ifdef F_LOCK | ||
| 214 | - { lseek(oldfdlock,oldlockoffset,SEEK_SET); | ||
| 215 | - i|=lockf(oldfdlock,F_LOCK,(off_t)2);i|=lockf(oldfdlock,F_ULOCK,(off_t)0); | ||
| 216 | - } | ||
| 217 | -#else | ||
| 218 | - i=1; | ||
| 219 | -#endif | ||
| 220 | - if(MSK_fcntl&dolock) | ||
| 221 | -#ifdef F_SETLKW | ||
| 222 | - flck.l_type=F_UNLCK,flck.l_len=0,i|=fcntl(oldfdlock,F_SETLK,&flck); | ||
| 223 | -#else | ||
| 224 | - i=1; | ||
| 225 | -#endif | ||
| 226 | - if(!i) | ||
| 227 | - for(i=GOBBLE;i&&gobble[--i]==~(unsigned)0;); | ||
| 228 | - return i; | ||
| 229 | -} | ||
| 230 | HERE | ||
| 231 | |||
| 232 | if $MAKE _autotst >_autotst.rrr 2>&1 | ||
| 233 | @@ -1029,6 +1030,10 @@ cat >_autotst.c <<HERE | ||
| 234 | #ifndef NO_COMSAT | ||
| 235 | #include "network.h" | ||
| 236 | #endif | ||
| 237 | +#include <string.h> | ||
| 238 | +#include <unistd.h> | ||
| 239 | +int setrgid(); | ||
| 240 | +int setresgid(); | ||
| 241 | int main(){char a[2]; | ||
| 242 | endpwent();endgrent();memmove(a,"0",1);bcopy("0",a,1);strcspn(a,"0"); | ||
| 243 | strtol("0",(char**)0,10);strchr("0",'0');strpbrk(a,"0");rename(a,"0"); | ||
| 244 | @@ -1059,7 +1064,7 @@ echo 'Testing for memmove, strchr, strpbrk, strcspn, strtol, strstr,' | ||
| 245 | echo ' rename, setrgid, setegid, pow, opendir, mkdir, waitpid, fsync,' | ||
| 246 | echo ' ftruncate, strtod, strncasecmp, strerror, strlcat,' | ||
| 247 | echo ' memset, bzero, and _exit' | ||
| 248 | -if $MAKE _autotst.$O >$DEVNULL 2>&1 | ||
| 249 | +if $MAKE _autotst.$O >_autotst.rrr 2>&1 | ||
| 250 | then | ||
| 251 | : | ||
| 252 | else | ||
| 253 | |||
diff --git a/meta-oe/recipes-support/procmail/procmail_3.22.bb b/meta-oe/recipes-support/procmail/procmail_3.24.bb index 47c8310eaf..cb3775ebf6 100644 --- a/meta-oe/recipes-support/procmail/procmail_3.22.bb +++ b/meta-oe/recipes-support/procmail/procmail_3.24.bb | |||
| @@ -8,46 +8,38 @@ forward certain incoming mail automatically to someone." | |||
| 8 | HOMEPAGE = "http://www.procmail.org/" | 8 | HOMEPAGE = "http://www.procmail.org/" |
| 9 | SECTION = "Applications/System" | 9 | SECTION = "Applications/System" |
| 10 | 10 | ||
| 11 | SRC_URI = "http://www.ring.gr.jp/archives/net/mail/${BPN}/${BP}.tar.gz \ | 11 | SRCREV = "07e769f07102767242edf835e995db6646bba373" |
| 12 | file://from-debian-to-fix-compile-errors.patch \ | 12 | SRC_URI = "git://github.com/BuGlessRB/procmail;protocol=https;branch=master;tag=v${PV} \ |
| 13 | file://from-debian-to-modify-parameters.patch \ | 13 | file://procmail-3.24-consolidated_fixes-1.patch \ |
| 14 | file://from-debian-to-fix-man-file.patch \ | 14 | " |
| 15 | file://man-file-mailstat.1-from-debian.patch \ | ||
| 16 | file://CVE-2014-3618.patch \ | ||
| 17 | file://CVE-2017-16844.patch \ | ||
| 18 | file://gcc14.patch \ | ||
| 19 | file://0001-fix-uname-declaration.patch \ | ||
| 20 | file://0001-fix-too-many-arguments-issue.patch \ | ||
| 21 | " | ||
| 22 | SRC_URI[sha256sum] = "087c75b34dd33d8b9df5afe9e42801c9395f4bf373a784d9bc97153b0062e117" | ||
| 23 | 15 | ||
| 24 | LICENSE = "GPL-2.0-only & Artistic-1.0" | 16 | LICENSE = "GPL-2.0-only & Artistic-1.0" |
| 25 | LIC_FILES_CHKSUM = "file://COPYING;md5=a71e50e197a992c862379e576e669757 \ | 17 | LIC_FILES_CHKSUM = "file://COPYING;md5=a71e50e197a992c862379e576e669757 \ |
| 26 | file://Artistic;md5=505e00d03c3428cde21b17b2a386590e" | 18 | file://Artistic;md5=505e00d03c3428cde21b17b2a386590e" |
| 27 | 19 | ||
| 28 | DEPENDS = "libnet" | 20 | DEPENDS = "libnet libnsl2" |
| 21 | |||
| 29 | inherit autotools-brokensep | 22 | inherit autotools-brokensep |
| 30 | 23 | ||
| 31 | do_configure() { | 24 | do_configure() { |
| 32 | find examples -type f | xargs chmod 644 | 25 | find examples -type f | xargs chmod 644 |
| 33 | export CC="${BUILD_CC}" | 26 | export CC="${BUILD_CC} -std=gnu17 -Wno-implicit-function-declaration" |
| 34 | export LD="${BUILD_LD}" | 27 | export LD="${BUILD_LD}" |
| 35 | export CFLAGS="${BUILD_CFLAGS}" | 28 | export CFLAGS="${BUILD_CFLAGS}" |
| 36 | export AR="${BUILD_AR}" | 29 | export AR="${BUILD_AR}" |
| 37 | export AS="${BUILD_AS}" | 30 | export AS="${BUILD_AS}" |
| 38 | make TARGET_CFLAGS="$TARGET_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS0="${BUILD_LDFLAGS}" autoconf.h | 31 | oe_runmake TARGET_CFLAGS="$TARGET_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS0="${BUILD_LDFLAGS}" LOCKINGTEST=100 autoconf.h |
| 39 | } | 32 | } |
| 40 | 33 | ||
| 41 | do_compile() { | 34 | do_compile() { |
| 42 | oe_runmake -i CFLAGS="$TARGET_CFLAGS -Wno-comments -Wno-implicit-int -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS0="${LDFLAGS}" | 35 | oe_runmake -i CFLAGS="$TARGET_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 LOCKINGTEST=/tmp" LDFLAGS0="${LDFLAGS}" LOCKINGTEST=100 |
| 43 | } | 36 | } |
| 44 | 37 | ||
| 45 | do_install() { | 38 | do_install() { |
| 46 | install -d ${D}${bindir} | 39 | install -d ${D}${bindir} |
| 47 | install -d ${D}${mandir}/man1 | 40 | install -d ${D}${mandir}/man1 |
| 48 | install -d ${D}${mandir}/man5 | 41 | install -d ${D}${mandir}/man5 |
| 49 | oe_runmake -i BASENAME=${D}/usr MANDIR=${D}${mandir} install | 42 | oe_runmake -i BASENAME=${D}/usr MANDIR=${D}${mandir} LOCKINGTEST=100 LDFLAGS0="${LDFLAGS}" install |
| 50 | install -m 0644 debian/mailstat.1 ${D}${mandir}/man1 | ||
| 51 | } | 43 | } |
| 52 | 44 | ||
| 53 | CVE_STATUS[CVE-1999-0475] = "fixed-version: No action required. The current version (3.22) is not affected by the CVE." | 45 | CVE_STATUS[CVE-1999-0475] = "fixed-version: No action required. The current version (3.24) is not affected by the CVE." |
