gentoo/net-mail/vpopmail/files/vpopmail-5.4.33-clean-up-calling-maildrop.patch
Rolf Eike Beer fc4c22fc0d
net-mail/vpopmail: add some more patches
I have been running all but the strncat patch on my server for years now. The
strncat patch was taken from upstream bugtracker and looks sane to me.

While at it also package the upgrade instructions and let the user look them up
there.

Closes: https://bugs.gentoo.org/472420
Closes: https://bugs.gentoo.org/479432
Signed-off-by: Rolf Eike Beer <eike@sf-mail.de>
Closes: https://github.com/gentoo/gentoo/pull/12990
Signed-off-by: Joonas Niilola <juippis@gentoo.org>
2019-09-26 18:59:56 +03:00

75 lines
2.3 KiB
Diff

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