summaryrefslogtreecommitdiffstats
path: root/meta-networking/recipes-support/ssmtp
diff options
context:
space:
mode:
authorAndre McCurdy <armccurdy@gmail.com>2017-10-20 15:29:15 -0700
committerJoe MacDonald <joe_macdonald@mentor.com>2018-01-08 11:48:42 -0500
commit5ff5afa30b5b673847af2d202e6c2b35be4ad5dc (patch)
tree22363aeefeeab0a31455a3e1697cfe0fe22b12d0 /meta-networking/recipes-support/ssmtp
parent43d2d966b957886bc54d7f15e6632211c41114c3 (diff)
downloadmeta-openembedded-5ff5afa30b5b673847af2d202e6c2b35be4ad5dc.tar.gz
ssmtp: misc recipe updates + add Debian "partial loss of message body" fix
- Backport Debian fix for "partial loss of message body, sending message to wrong recipicients" issue: https://sources.debian.net/patches/ssmtp/2.64-8/ssmtp-bug584162-fix.patch/ - Control ipv6 support based on ipv6 DISTRO feature. - Enable ssl support by default (and add PACKAGECONFIG option to control it). - Drop inetutils dependency (inetutils provides only applications, not libraries or header files, so a build dependency on it doesn't make sense). - Drop pkgconfig class (the ssmtp configure script etc doesn't make any use of pkg-config). Signed-off-by: Andre McCurdy <armccurdy@gmail.com> Signed-off-by: Armin Kuster <akuster808@gmail.com> Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com>
Diffstat (limited to 'meta-networking/recipes-support/ssmtp')
-rw-r--r--meta-networking/recipes-support/ssmtp/ssmtp/ssmtp-bug584162-fix.patch126
-rw-r--r--meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb24
2 files changed, 140 insertions, 10 deletions
diff --git a/meta-networking/recipes-support/ssmtp/ssmtp/ssmtp-bug584162-fix.patch b/meta-networking/recipes-support/ssmtp/ssmtp/ssmtp-bug584162-fix.patch
new file mode 100644
index 000000000..e087bc752
--- /dev/null
+++ b/meta-networking/recipes-support/ssmtp/ssmtp/ssmtp-bug584162-fix.patch
@@ -0,0 +1,126 @@
1Bug-Debian: http://bugs.debian.org/584162
2Reported-By: Christoph Biedl <debian.axhn@manchmal.in-ulm.de>
3Forwarded: not-needed
4Reviewed-By: Anibal Monsalve Salazar <anibal@debian.org>
5Last-Update: 2014-08-15
6
7From: "Daniel Richard G." <skunk@iSKUNK.ORG>
8Subject: Re: ssmtp: Partial loss of message body, sending message to wrong recipicients
9Date: Thu, 19 Jun 2014 14:44:30 -0400
10
11Attached is a patch against the original 2.64 source that should address
12this bug, and hopefully not break anything. An overview of my changes:
13
14* Added code to standarise() to drop the trailing '\r' if the line
15 originally ended with "\r\n".
16
17* Added a check to header_parse() that effectively converts an "\r\n" in
18 the input into '\n'.
19
20* Added a conditional so that header_parse() doesn't pass the empty
21 string to header_save()---a behavior I observed in testing, at the end
22 of a header block with "\r\n" line endings.
23
24* Simplified the last if(in_header) conditional in header_parse(),
25 because it erroneously assumes that if in_header == True, then c could
26 have some value other than EOF. (See the condition on the previous
27 "while" loop, and the lack of any other way to exit said loop.)
28
29 header_parse() will now properly grab a header if fed a message
30 without a body (i.e. no "\n\n" ending the header block), although this
31 code will still drop a header if there is no newline at the end.
32
33Christoph, thank you for your excellent analysis, and the test cases. I
34made use of them, and with my changes sSMTP appears to do the right
35thing.
36
37Debian patch from: https://sources.debian.net/patches/ssmtp/2.64-8/
38
39Upstream-Status: Backport [debian]
40
41Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
42
43Index: ssmtp-2.64/ssmtp.c
44===================================================================
45--- ssmtp-2.64.orig/ssmtp.c
46+++ ssmtp-2.64/ssmtp.c
47@@ -375,6 +375,12 @@ bool_t standardise(char *str, bool_t *li
48 if((p = strchr(str, '\n'))) {
49 *p = (char)NULL;
50 *linestart = True;
51+
52+ /* If the line ended in "\r\n", then drop the '\r' too */
53+ sl = strlen(str);
54+ if(sl >= 1 && str[sl - 1] == '\r') {
55+ str[sl - 1] = (char)NULL;
56+ }
57 }
58 return(leadingdot);
59 }
60@@ -768,6 +774,14 @@ void header_parse(FILE *stream)
61 }
62 len++;
63
64+ if(l == '\r' && c == '\n') {
65+ /* Properly handle input that already has "\r\n"
66+ line endings; see https://bugs.debian.org/584162 */
67+ l = (len >= 2 ? *(q - 2) : '\n');
68+ q--;
69+ len--;
70+ }
71+
72 if(l == '\n') {
73 switch(c) {
74 case ' ':
75@@ -790,7 +804,9 @@ void header_parse(FILE *stream)
76 if((q = strrchr(p, '\n'))) {
77 *q = (char)NULL;
78 }
79- header_save(p);
80+ if(len > 0) {
81+ header_save(p);
82+ }
83
84 q = p;
85 len = 0;
86@@ -800,35 +816,12 @@ void header_parse(FILE *stream)
87
88 l = c;
89 }
90- if(in_header) {
91- if(l == '\n') {
92- switch(c) {
93- case ' ':
94- case '\t':
95- /* Must insert '\r' before '\n's embedded in header
96- fields otherwise qmail won't accept our mail
97- because a bare '\n' violates some RFC */
98-
99- *(q - 1) = '\r'; /* Replace previous \n with \r */
100- *q++ = '\n'; /* Insert \n */
101- len++;
102-
103- break;
104-
105- case '\n':
106- in_header = False;
107-
108- default:
109- *q = (char)NULL;
110- if((q = strrchr(p, '\n'))) {
111- *q = (char)NULL;
112- }
113- header_save(p);
114-
115- q = p;
116- len = 0;
117- }
118+ if(in_header && l == '\n') {
119+ /* Got EOF while reading the header */
120+ if((q = strrchr(p, '\n'))) {
121+ *q = (char)NULL;
122 }
123+ header_save(p);
124 }
125 (void)free(p);
126 }
diff --git a/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb b/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb
index 9d4864d79..07e3ffed4 100644
--- a/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb
+++ b/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb
@@ -1,25 +1,29 @@
1SUMMARY = "extremely simple MTA to get mail off the system to a mail hub" 1SUMMARY = "extremely simple MTA to get mail off the system to a mail hub"
2HOMEPAGE = "http://packages.qa.debian.org/s/ssmtp.html" 2HOMEPAGE = "http://packages.qa.debian.org/s/ssmtp.html"
3
4LICENSE = "GPLv2" 3LICENSE = "GPLv2"
5LIC_FILES_CHKSUM = "file://COPYING;md5=0c56db0143f4f80c369ee3af7425af6e" 4LIC_FILES_CHKSUM = "file://COPYING;md5=0c56db0143f4f80c369ee3af7425af6e"
6 5
7SRC_URI = "\ 6SRC_URI = "${DEBIAN_MIRROR}/main/s/${BPN}/${BPN}_${PV}.orig.tar.bz2 \
8 ${DEBIAN_MIRROR}/main/s/${BPN}/${BPN}_${PV}.orig.tar.bz2 \ 7 file://ssmtp-bug584162-fix.patch \
9 file://build-ouside_srcdir.patch \ 8 file://build-ouside_srcdir.patch \
10 file://use-DESTDIR.patch \ 9 file://use-DESTDIR.patch \
11 " 10"
12
13EXTRA_OECONF += "--mandir=${mandir}"
14
15EXTRA_OEMAKE = "GEN_CONFIG='/bin/true'"
16 11
17SRC_URI[md5sum] = "65b4e0df4934a6cd08c506cabcbe584f" 12SRC_URI[md5sum] = "65b4e0df4934a6cd08c506cabcbe584f"
18SRC_URI[sha256sum] = "22c37dc90c871e8e052b2cab0ad219d010fa938608cd66b21c8f3c759046fa36" 13SRC_URI[sha256sum] = "22c37dc90c871e8e052b2cab0ad219d010fa938608cd66b21c8f3c759046fa36"
19 14
20inherit autotools pkgconfig 15inherit autotools
16
17PACKAGECONFIG ?= "ssl ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}"
18
19PACKAGECONFIG[ssl] = "--enable-ssl,--disable-ssl,openssl"
20PACKAGECONFIG[ipv6] = "--enable-inet6,--disable-inet6"
21
22EXTRA_OECONF += "--mandir=${mandir}"
23
24EXTRA_OEMAKE = "GEN_CONFIG='/bin/true'"
21 25
22DEPENDS += "openssl inetutils" 26LDFLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'ssl', '-lssl -lcrypto', '', d)}"
23 27
24do_install_append () { 28do_install_append () {
25 install -d ${D}${mandir}/ 29 install -d ${D}${mandir}/