summaryrefslogtreecommitdiff
path: root/net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch
diff options
context:
space:
mode:
Diffstat (limited to 'net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch')
-rw-r--r--net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch74
1 files changed, 74 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
+