This patch removes the copy argument to addarg, which is unneeded. No functional change.
Index: mailwrapper.c =================================================================== RCS file: /cvs/src/usr.sbin/mailwrapper/mailwrapper.c,v retrieving revision 1.21 diff -u -p -r1.21 mailwrapper.c --- mailwrapper.c 14 Dec 2015 02:56:07 -0000 1.21 +++ mailwrapper.c 14 Dec 2015 16:42:14 -0000 @@ -51,7 +51,7 @@ struct arglist { int main(int, char *[], char *[]); static void initarg(struct arglist *); -static void addarg(struct arglist *, const char *, int); +static void addarg(struct arglist *, const char *); extern const char *__progname; /* from crt0.o */ @@ -65,7 +65,7 @@ initarg(struct arglist *al) } static void -addarg(struct arglist *al, const char *arg, int copy) +addarg(struct arglist *al, const char *arg) { if (al->argc == al->maxc) { al->maxc <<= 1; @@ -73,11 +73,8 @@ addarg(struct arglist *al, const char *a if (al->argv == NULL) err(1, "realloc"); } - if (copy) { - if ((al->argv[al->argc++] = strdup(arg)) == NULL) - err(1, "strdup"); - } else - al->argv[al->argc++] = (char *)arg; + + al->argv[al->argc++] = (char *)arg; } int @@ -98,7 +95,7 @@ main(int argc, char *argv[], char *envp[ initarg(&al); for (len = 0; len < argc; len++) - addarg(&al, argv[len], 0); + addarg(&al, argv[len]); config = fopen(_PATH_MAILERCONF, "r"); @@ -106,7 +103,7 @@ main(int argc, char *argv[], char *envp[ err(1, "pledge"); if (config == NULL) { - addarg(&al, NULL, 0); + addarg(&al, NULL); openlog(__progname, LOG_PID, LOG_MAIL); syslog(LOG_INFO, "cannot open %s, using %s as default MTA", _PATH_MAILERCONF, _PATH_DEFAULTMTA); @@ -145,7 +142,7 @@ main(int argc, char *argv[], char *envp[ for (ap = strsep(&cp, WS); ap != NULL; ap = strsep(&cp, WS)) if (*ap) - addarg(&al, ap, 0); + addarg(&al, ap); break; } @@ -154,7 +151,7 @@ main(int argc, char *argv[], char *envp[ (void)fclose(config); - addarg(&al, NULL, 0); + addarg(&al, NULL); execve(to, al.argv, envp); err(1, "cannot exec %s", to);