Blame SOURCES/mailx-12.5-unpack-Disable-option-processing-for-email-addresses.patch

c88ac0
From e34e2ac67b80497080ebecccec40c3b61456167d Mon Sep 17 00:00:00 2001
c88ac0
From: Florian Weimer <fweimer@redhat.com>
c88ac0
Date: Mon, 17 Nov 2014 11:14:06 +0100
c88ac0
Subject: [PATCH 2/4] unpack: Disable option processing for email addresses
c88ac0
 when calling sendmail
c88ac0
c88ac0
---
c88ac0
 extern.h  | 2 +-
c88ac0
 names.c   | 8 ++++++--
c88ac0
 sendout.c | 2 +-
c88ac0
 3 files changed, 8 insertions(+), 4 deletions(-)
c88ac0
c88ac0
diff --git a/extern.h b/extern.h
c88ac0
index 6b85ba0..8873fe8 100644
c88ac0
--- a/extern.h
c88ac0
+++ b/extern.h
c88ac0
@@ -396,7 +396,7 @@ struct name *outof(struct name *names, FILE *fo, struct header *hp);
c88ac0
 int is_fileaddr(char *name);
c88ac0
 struct name *usermap(struct name *names);
c88ac0
 struct name *cat(struct name *n1, struct name *n2);
c88ac0
-char **unpack(struct name *np);
c88ac0
+char **unpack(struct name *smopts, struct name *np);
c88ac0
 struct name *elide(struct name *names);
c88ac0
 int count(struct name *np);
c88ac0
 struct name *delete_alternates(struct name *np);
c88ac0
diff --git a/names.c b/names.c
c88ac0
index c69560f..45bbaed 100644
c88ac0
--- a/names.c
c88ac0
+++ b/names.c
c88ac0
@@ -549,7 +549,7 @@ cat(struct name *n1, struct name *n2)
c88ac0
  * Return an error if the name list won't fit.
c88ac0
  */
c88ac0
 char **
c88ac0
-unpack(struct name *np)
c88ac0
+unpack(struct name *smopts, struct name *np)
c88ac0
 {
c88ac0
 	char **ap, **top;
c88ac0
 	struct name *n;
c88ac0
@@ -564,7 +564,7 @@ unpack(struct name *np)
c88ac0
 	 * the terminating 0 pointer.  Additional spots may be needed
c88ac0
 	 * to pass along -f to the host mailer.
c88ac0
 	 */
c88ac0
-	extra = 2;
c88ac0
+	extra = 3 + count(smopts);
c88ac0
 	extra++;
c88ac0
 	metoo = value("metoo") != NULL;
c88ac0
 	if (metoo)
c88ac0
@@ -581,6 +581,10 @@ unpack(struct name *np)
c88ac0
 		*ap++ = "-m";
c88ac0
 	if (verbose)
c88ac0
 		*ap++ = "-v";
c88ac0
+	for (; smopts != NULL; smopts = smopts->n_flink)
c88ac0
+		if ((smopts->n_type & GDEL) == 0)
c88ac0
+			*ap++ = smopts->n_name;
c88ac0
+	*ap++ = "--";
c88ac0
 	for (; n != NULL; n = n->n_flink)
c88ac0
 		if ((n->n_type & GDEL) == 0)
c88ac0
 			*ap++ = n->n_name;
c88ac0
diff --git a/sendout.c b/sendout.c
c88ac0
index 7b7f2eb..c52f15d 100644
c88ac0
--- a/sendout.c
c88ac0
+++ b/sendout.c
c88ac0
@@ -835,7 +835,7 @@ start_mta(struct name *to, struct name *mailargs, FILE *input,
c88ac0
 #endif	/* HAVE_SOCKETS */
c88ac0
 
c88ac0
 	if ((smtp = value("smtp")) == NULL) {
c88ac0
-		args = unpack(cat(mailargs, to));
c88ac0
+		args = unpack(mailargs, to);
c88ac0
 		if (debug || value("debug")) {
c88ac0
 			printf(catgets(catd, CATSET, 181,
c88ac0
 					"Sendmail arguments:"));
c88ac0
-- 
c88ac0
1.9.3
c88ac0