summaryrefslogtreecommitdiff
path: root/net-mail/vpopmail/files
diff options
context:
space:
mode:
Diffstat (limited to 'net-mail/vpopmail/files')
-rw-r--r--net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch74
-rw-r--r--net-mail/vpopmail/files/vpopmail-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch96
-rw-r--r--net-mail/vpopmail/files/vpopmail-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch77
-rw-r--r--net-mail/vpopmail/files/vpopmail-5.4.33-remove-unneeded-forward-declaration.patch24
-rw-r--r--net-mail/vpopmail/files/vpopmail-5.4.33-strncat.patch166
-rw-r--r--net-mail/vpopmail/files/vpopmail-5.4.33-unistd.patch9
-rw-r--r--net-mail/vpopmail/files/vpopmail-5.4.33-vdelivermail-add-static.patch34
7 files changed, 480 insertions, 0 deletions
diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch
new file mode 100644
index 000000000000..c85c1b3150d2
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch
@@ -0,0 +1,74 @@
+From 692e6f75056d93f0e9a024e3638259d5ba0fe398 Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Thu, 21 Aug 2014 17:55:27 +0200
+Subject: [PATCH 4/5] clean up calling maildrop
+
+-add const for arguments
+-do not prepend "| " to call for preline, run_command() will then just skip
+ over this anyway
+-put the buffer for the maildrop command in the most local scope
+---
+ vdelivermail.c | 14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/vpopmail-5.4.33/vdelivermail.c b/vpopmail-5.4.33/vdelivermail.c
+index be83a2a..2ad2e12 100644
+--- a/vdelivermail.c
++++ b/vdelivermail.c
+@@ -94,7 +94,7 @@ ssize_t get_message_size();
+ void deliver_mail(char *address, char *quota);
+ int check_forward_deliver(char *dir);
+ int is_looping( char *address );
+-void run_command(char *prog);
++static void run_command(const char *prog);
+ void checkuser(void);
+ void usernotfound(void);
+ int is_loop_match( const char *dt, const char *address);
+@@ -360,9 +360,6 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t
+ long unsigned pid;
+ int pim[2];
+ #endif
+-#ifdef MAILDROP
+- char maildrop_command[256];
+-#endif
+
+ /* write the Return-Path: and Delivered-To: headers */
+ if (headerlen > 0) {
+@@ -409,7 +406,8 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t
+ #ifdef MAILDROP
+ if ( limits.disable_maildrop==0 && vpw!=NULL &&
+ !(vpw->pw_gid & NO_MAILDROP) ) {
+- sprintf(maildrop_command, "| preline %s", MAILDROP_PROG);
++ char maildrop_command[256];
++ sprintf(maildrop_command, "preline %s", MAILDROP_PROG);
+ run_command(maildrop_command);
+ DeleteMail = 1;
+ return(0);
+@@ -896,13 +894,13 @@ void (*f)();
+ /* open a pipe to a command
+ * return the pid or -1 if error
+ */
+-void run_command(char *prog)
++void run_command(const char *prog)
+ {
+
+ #define MAX_ENV_BUFF 100
+
+ int child;
+- char *(args[4]);
++ const char *(args[4]);
+ int wstat;
+
+ while ((*prog == ' ') || (*prog == '|')) ++prog;
+@@ -915,7 +913,7 @@ void run_command(char *prog)
+ case 0:
+
+ putenv("SHELL=/bin/sh");
+- args[0] = "/bin/sh"; args[1] = "-c"; args[2] = prog; args[3] = 0;
++ args[0] = "/bin/sh"; args[1] = "-c"; args[2] = prog; args[3] = NULL;
+ sig_catch(SIGPIPE,SIG_DFL);
+ execv(*args,args);
+ printf("Unable to run /bin/sh: %d.", errno);
+--
+1.8.4.5
+
diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch
new file mode 100644
index 000000000000..db22a6efde42
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-fix-S-tag-in-case-spamassassin-changed-the-file-size.patch
@@ -0,0 +1,96 @@
+From fd0a1034e3842ceb573851e62547b26a2b389263 Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Thu, 21 Aug 2014 18:48:52 +0200
+Subject: [PATCH 5/5] fix ,S= tag in case spamassassin changed the file size
+
+---
+ vdelivermail.c | 24 +++++++++++++++++++++---
+ 1 file changed, 21 insertions(+), 3 deletions(-)
+
+diff --git a/vpopmail-5.4.33/vdelivermail.c b/vpopmail-5.4.33/vdelivermail.c
+index 2ad2e12..3631c3c 100644
+--- a/vdelivermail.c
++++ b/vdelivermail.c
+@@ -351,6 +351,12 @@ static pid_t qmail_inject_open(char *address)
+ return(pid);
+ }
+
++/**
++ * @returns if delivery worked
++ * @retval 0 message was delivered as is
++ * @retval 1 the file has changed the size during delivery
++ * @retval -1 error
++ */
+ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t headerlen, char *address)
+ {
+ char msgbuf[4096];
+@@ -360,6 +366,7 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t
+ long unsigned pid;
+ int pim[2];
+ #endif
++ int has_changed_size = 0;
+
+ /* write the Return-Path: and Delivered-To: headers */
+ if (headerlen > 0) {
+@@ -399,6 +406,7 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t
+ close(pim[1]);
+ dup2(pim[0], 0);
+ close(pim[0]);
++ has_changed_size = 1;
+ }
+ }
+ #endif
+@@ -431,7 +439,7 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t
+ if ( write(write_fd, msgbuf, file_count) == -1 ) return -1;
+ }
+
+- return 0;
++ return has_changed_size;
+ }
+
+ void read_quota_from_maildir (const char *maildir, char *qbuf, size_t qlen)
+@@ -493,6 +501,7 @@ int deliver_to_maildir (
+ size_t headerlen;
+ int write_fd;
+ char quota[80];
++ int fdr;
+
+ headerlen = strlen (extra_headers);
+ msgsize += headerlen;
+@@ -518,7 +527,8 @@ int deliver_to_maildir (
+ }
+
+ local = 1;
+- if (fdcopy(write_fd, read_fd, extra_headers, headerlen, maildir_to_email(maildir)) != 0) {
++ fdr = fdcopy(write_fd, read_fd, extra_headers, headerlen, maildir_to_email(maildir));
++ if (fdr < 0) {
+ /* Did the write fail because we were over quota? */
+ if ( errno == EDQUOT ) {
+ close(write_fd);
+@@ -530,6 +540,14 @@ int deliver_to_maildir (
+ unlink (local_file_tmp);
+ return -2;
+ }
++ } else if (fdr == 1) {
++ /* the file has changed it's size during delivery, e.g. because
++ * SpamAssassin has written it's report to it. */
++ struct stat st;
++
++ if (fstat(write_fd, &st) == 0 && st.st_size != msgsize)
++ snprintf(local_file_new, sizeof(local_file_new), "%snew/%lu.%lu.%.32s,S=%lu",
++ maildir, tm, pid, hostname, (long unsigned) st.st_size);
+ }
+
+ /* completed write to tmp directory, now move it into the new directory */
+@@ -777,7 +795,7 @@ void deliver_mail(char *address, char *quota)
+ }
+
+ local = 0;
+- if (fdcopy (fdm, 0, DeliveredTo, strlen(DeliveredTo), address) != 0) {
++ if (fdcopy (fdm, 0, DeliveredTo, strlen(DeliveredTo), address) < 0) {
+ printf ("write to qmail-inject failed: %d\n", errno);
+ close(fdm);
+ waitpid(inject_pid,&child,0);
+--
+1.8.4.5
+
diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch
new file mode 100644
index 000000000000..4f154fcc8d33
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-fix-those-vfork-instances-that-do-more-than-exec.patch
@@ -0,0 +1,77 @@
+From de58b5d05fdabf2f17d8a6ec3ef804b59a013242 Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Thu, 21 Aug 2014 17:36:36 +0200
+Subject: [PATCH 2/5] fix those vfork() instances that do more than exec*()
+
+---
+ vdelivermail.c | 4 ++--
+ vpopmail.c | 8 ++++----
+ vqmaillocal.c | 2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/vpopmail-5.4.33/vdelivermail.c b/vpopmail-5.4.33/vdelivermail.c
+index 241106e..be83a2a 100644
+--- a/vdelivermail.c
++++ b/vdelivermail.c
+@@ -330,7 +330,7 @@ static pid_t qmail_inject_open(char *address)
+
+ if ( pipe(pim) == -1) return 0;
+
+- switch(pid=vfork()){
++ switch(pid=fork()){
+ case -1:
+ close(pim[0]);
+ close(pim[1]);
+@@ -381,7 +381,7 @@ static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t
+ !(vpw->pw_gid & NO_SPAMASSASSIN) ) {
+
+ if (!pipe(pim)) {
+- pid = vfork();
++ pid = fork();
+ switch (pid) {
+ case -1:
+ close(pim[0]);
+diff --git a/vpopmail-5.4.33/vpopmail.c b/vpopmail-5.4.33/vpopmail.c
+index 5aaeb32..334a8ab 100644
+--- a/vpopmail.c
++++ b/vpopmail.c
+@@ -1473,9 +1473,9 @@ int update_newu()
+ {
+ int pid;
+
+- pid=vfork();
++ pid=fork();
+ if ( pid==0){
+- umask(022);
++ umask(022);
+ execl(QMAILNEWU,"qmail-newu", NULL);
+ exit(127);
+ } else {
+@@ -3366,9 +3366,9 @@ long unsigned tcprules_open()
+ /* create a pair of filedescriptors for our pipe */
+ if (pipe(pim) == -1) { return(-1);}
+
+- switch( pid=vfork()){
++ switch( pid=fork()){
+ case -1:
+- /* vfork error. close pipes and exit */
++ /* fork error. close pipes and exit */
+ close(pim[0]); close(pim[1]);
+ return(-1);
+ case 0:
+diff --git a/vpopmail-5.4.33/vqmaillocal.c b/vpopmail-5.4.33/vqmaillocal.c
+index 6d3068c..80efa24 100644
+--- a/vqmaillocal.c
++++ b/vqmaillocal.c
+@@ -359,7 +359,7 @@ long unsigned qmail_inject_open(char *address)
+
+ if ( pipe(pim) == -1) return(-1);
+
+- switch(pid=vfork()){
++ switch(pid=fork()){
+ case -1:
+ close(pim[0]);
+ close(pim[1]);
+--
+1.8.4.5
+
diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-remove-unneeded-forward-declaration.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-remove-unneeded-forward-declaration.patch
new file mode 100644
index 000000000000..23ec43be0242
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-remove-unneeded-forward-declaration.patch
@@ -0,0 +1,24 @@
+From 32ce986d86695dd55d4c888c30fe62b910b99f17 Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Thu, 21 Aug 2014 17:45:28 +0200
+Subject: [PATCH 3/5] remove unneeded forward declaration
+
+---
+ vchkpw.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/vpopmail-5.4.33/vchkpw.c b/vpopmail-5.4.33/vchkpw.c
+index b1c8a5d..d7d4351 100644
+--- a/vchkpw.c
++++ b/vchkpw.c
+@@ -91,7 +91,6 @@ void login_system_user();
+ void read_user_pass();
+ void vlog(int verror, char *TheUser, char *TheDomain, char *ThePass, char *TheName, char *IpAddr, char *LogLine);
+ void vchkpw_exit(int err);
+-void run_command(char *prog);
+ int authcram( char *response, char *challenge, char *password);
+ int authapop( char *password, char *timestamp, char *clearpass);
+
+--
+1.8.4.5
+
diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-strncat.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-strncat.patch
new file mode 100644
index 000000000000..f3c9c71b2993
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-strncat.patch
@@ -0,0 +1,166 @@
+https://sourceforge.net/p/vpopmail/patches/98/
+
+--- a/vpopmaild.c (revision 998)
++++ b/vpopmaild.c (working copy)
+@@ -1326,7 +1326,7 @@
+ }
+ }
+ snprintf(newpath, MAXPATH, "%s",myvpw->pw_dir);
+- strncat(newpath, &path[i], MAXPATH );
++ strncat(newpath, &path[i], MAXPATH-strlen(newpath)-1);
+ } else { /* may be domain name */
+ for(i=0;path[i]!='/'&&path[i]!=0&&i<256;++i) {
+ thedomain[i] = path[i];
+@@ -1337,7 +1337,7 @@
+ return(9);
+ }
+ snprintf(newpath, MAXPATH, "%s", thedir);
+- strncat(newpath, &path[i], MAXPATH );
++ strncat(newpath, &path[i], MAXPATH-strlen(newpath)-1);
+ }
+ }
+
+@@ -1459,23 +1459,23 @@
+ }
+ snprintf( WriteBuf, sizeof(WriteBuf), "%s", mydirent->d_name);
+ if ( S_ISREG(statbuf.st_mode ) ) {
+- strncat(WriteBuf," file", sizeof(WriteBuf));
++ strncat(WriteBuf," file", sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ } else if ( S_ISDIR(statbuf.st_mode ) ) {
+- strncat(WriteBuf," dir", sizeof(WriteBuf));
++ strncat(WriteBuf," dir", sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ } else if ( S_ISCHR(statbuf.st_mode ) ) {
+- strncat(WriteBuf," chardev", sizeof(WriteBuf));
++ strncat(WriteBuf," chardev", sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ } else if ( S_ISBLK(statbuf.st_mode ) ) {
+- strncat(WriteBuf," blkdev", sizeof(WriteBuf));
++ strncat(WriteBuf," blkdev", sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ } else if ( S_ISFIFO(statbuf.st_mode ) ) {
+- strncat(WriteBuf," fifo", sizeof(WriteBuf));
++ strncat(WriteBuf," fifo", sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ } else if ( S_ISLNK(statbuf.st_mode ) ) {
+- strncat(WriteBuf," link", sizeof(WriteBuf));
++ strncat(WriteBuf," link", sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ } else if ( S_ISSOCK(statbuf.st_mode ) ) {
+- strncat(WriteBuf," sock", sizeof(WriteBuf));
++ strncat(WriteBuf," sock", sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ } else {
+- strncat(WriteBuf," unknown", sizeof(WriteBuf));
++ strncat(WriteBuf," unknown", sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ }
+- strncat(WriteBuf,RET_CRLF, sizeof(WriteBuf));
++ strncat(WriteBuf,RET_CRLF, sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ wait_write();
+ }
+ if ( closedir(mydir) < 0 ) {
+@@ -1604,7 +1604,7 @@
+ while(fgets(tmpbuf,sizeof(tmpbuf),fs)!=NULL){
+ if ( strcmp(tmpbuf, "." RET_CRLF) == 0 || strcmp(tmpbuf, ".\n") == 0 ) {
+ snprintf(WriteBuf, sizeof(WriteBuf), "%s", ".");
+- strncat(WriteBuf, tmpbuf, sizeof(WriteBuf));
++ strncat(WriteBuf, tmpbuf, sizeof(WriteBuf)-strlen(WriteBuf)-1);
+ } else {
+ memcpy(WriteBuf,tmpbuf,sizeof(tmpbuf));
+ }
+--- a/vmysql.c (revision 998)
++++ b/vmysql.c (working copy)
+@@ -731,7 +731,7 @@
+ );
+
+ if ( sortit == 1 ) {
+- strncat( SqlBufRead, " order by pw_name", SQL_BUF_SIZE);
++ strncat( SqlBufRead, " order by pw_name", SQL_BUF_SIZE-strlen(SqlBufRead)-1);
+ }
+
+ if (res_read!=NULL) mysql_free_result(res_read_getall);
+--- a/vldap.c (revision 998)
++++ b/vldap.c (working copy)
+@@ -1022,7 +1022,7 @@
+
+ /* if we are lucky the domain is in the assign file */
+ if ( vget_assign(domain,dir_control_file,MAX_DIR_NAME,NULL,NULL)!=NULL ) {
+- strncat(dir_control_file, "/.dir-control", MAX_DIR_NAME);
++ strncat(dir_control_file, "/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1);
+
+ /* it isn't in the assign file so we have to get it from /etc/passwd */
+ } else {
+@@ -1041,7 +1041,7 @@
+ }
+
+ /* stick on the rest of the path */
+- strncat(dir_control_file, "/" DOMAINS_DIR "/.dir-control", MAX_DIR_NAME);
++ strncat(dir_control_file, "/" DOMAINS_DIR "/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1);
+ }
+ return(dir_control_file);
+ }
+@@ -1177,7 +1177,7 @@
+ char dir_control_file[MAX_DIR_NAME];
+
+ vget_assign(domain, dir_control_file, 156, NULL,NULL);
+- strncat(dir_control_file,"/.dir-control", MAX_DIR_NAME);
++ strncat(dir_control_file,"/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1);
+ return(unlink(dir_control_file));
+ }
+
+--- a/vpopmail.c (revision 998)
++++ b/vpopmail.c (working copy)
+@@ -1900,8 +1900,8 @@
+
+ // Copy the rest of the terms into the domain name
+ for(j=1;j<i;j++) {
+- strncat( domain, ".", MAX_BUFF );
+- strncat( domain, parts[j], MAX_BUFF );
++ strncat( domain, ".", MAX_BUFF-strlen(domain)-1);
++ strncat( domain, parts[j], MAX_BUFF-strlen(domain)-1);
+ }
+
+ }
+--- a/vcdb.c (revision 998)
++++ b/vcdb.c (working copy)
+@@ -271,7 +271,7 @@
+ }
+
+ strncpy(line,user,sizeof(line));
+- strncat(line,":",sizeof(line));
++ strncat(line,":",sizeof(line)-strlen(line)-1);
+ ptr = line;
+ while (*ptr != ':') { ptr++; }
+ ptr++;
+@@ -1055,7 +1055,7 @@
+ char dir_control_file[MAX_DIR_NAME];
+
+ vget_assign(domain, dir_control_file, 156, NULL,NULL);
+- strncat(dir_control_file,"/.dir-control", MAX_DIR_NAME);
++ strncat(dir_control_file,"/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1);
+ return(unlink(dir_control_file));
+ }
+
+@@ -1120,7 +1120,7 @@
+
+ /* if we are lucky the domain is in the assign file */
+ if ( vget_assign(domain,dir_control_file,MAX_DIR_NAME,NULL,NULL)!=NULL ) {
+- strncat(dir_control_file, "/.dir-control", MAX_DIR_NAME);
++ strncat(dir_control_file, "/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1);
+
+ /* it isn't in the assign file so we have to get it from /etc/passwd */
+ } else {
+@@ -1139,7 +1139,7 @@
+ }
+
+ /* stick on the rest of the path */
+- strncat(dir_control_file, "/" DOMAINS_DIR "/.dir-control", MAX_DIR_NAME);
++ strncat(dir_control_file, "/" DOMAINS_DIR "/.dir-control", MAX_DIR_NAME-strlen(dir_control_file)-1);
+ }
+ return(dir_control_file);
+ }
+--- a/vpgsql.c (revision 998)
++++ b/vpgsql.c (working copy)
+@@ -522,7 +522,7 @@
+ #endif
+ );
+ if ( sortit == 1 ) {
+- strncat( SqlBufRead, " order by pw_name", SQL_BUF_SIZE);
++ strncat( SqlBufRead, " order by pw_name", SQL_BUF_SIZE-strlen(SqlBufRead)-1);
+ }
+ if ( pgres ) { /* reset state if we had previous result */
+ PQclear(pgres); // clear previous result
diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-unistd.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-unistd.patch
new file mode 100644
index 000000000000..803276f89ad5
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-unistd.patch
@@ -0,0 +1,9 @@
+--- vpopmail-5.4.33-orig/cdb/cdb_seek.c 2019-09-25 23:01:01.332000000 +0200
++++ vpopmail-5.4.33/cdb/cdb_seek.c 2019-09-25 23:03:04.112000000 +0200
+@@ -1,5 +1,6 @@
+ #include <sys/types.h>
+ #include <errno.h>
++#include <unistd.h>
+ #include "cdb.h"
+
+ #ifndef SEEK_SET
diff --git a/net-mail/vpopmail/files/vpopmail-5.4.33-vdelivermail-add-static.patch b/net-mail/vpopmail/files/vpopmail-5.4.33-vdelivermail-add-static.patch
new file mode 100644
index 000000000000..88306872b484
--- /dev/null
+++ b/net-mail/vpopmail/files/vpopmail-5.4.33-vdelivermail-add-static.patch
@@ -0,0 +1,34 @@
+From 31bef5aeeaf1e24eb40e84e41312dd6ae865ee03 Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <eike@sf-mail.de>
+Date: Thu, 21 Aug 2014 17:34:27 +0200
+Subject: [PATCH 1/5] vdelivermail: add static
+
+---
+ vdelivermail.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/vpopmail-5.4.33/vdelivermail.c b/vpopmail-5.4.33/vdelivermail.c
+index d94129f..241106e 100644
+--- a/vdelivermail.c
++++ b/vdelivermail.c
+@@ -322,7 +322,7 @@ int process_valias(void)
+ #endif
+
+ /* Forks off qmail-inject. Returns PID of child, or 0 for failure. */
+-pid_t qmail_inject_open(char *address)
++static pid_t qmail_inject_open(char *address)
+ {
+ int pim[2];
+ pid_t pid;
+@@ -351,7 +351,7 @@ pid_t qmail_inject_open(char *address)
+ return(pid);
+ }
+
+-int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t headerlen, char *address)
++static int fdcopy (int write_fd, int read_fd, const char *extra_headers, size_t headerlen, char *address)
+ {
+ char msgbuf[4096];
+ ssize_t file_count;
+--
+1.8.4.5
+