diff options
author | Andre McCurdy <armccurdy@gmail.com> | 2017-10-20 15:29:15 -0700 |
---|---|---|
committer | Joe MacDonald <joe_macdonald@mentor.com> | 2018-01-08 11:48:42 -0500 |
commit | 5ff5afa30b5b673847af2d202e6c2b35be4ad5dc (patch) | |
tree | 22363aeefeeab0a31455a3e1697cfe0fe22b12d0 /meta-networking | |
parent | 43d2d966b957886bc54d7f15e6632211c41114c3 (diff) | |
download | meta-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')
-rw-r--r-- | meta-networking/recipes-support/ssmtp/ssmtp/ssmtp-bug584162-fix.patch | 126 | ||||
-rw-r--r-- | meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb | 24 |
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 0000000000..e087bc7523 --- /dev/null +++ b/meta-networking/recipes-support/ssmtp/ssmtp/ssmtp-bug584162-fix.patch @@ -0,0 +1,126 @@ +Bug-Debian: http://bugs.debian.org/584162 +Reported-By: Christoph Biedl <debian.axhn@manchmal.in-ulm.de> +Forwarded: not-needed +Reviewed-By: Anibal Monsalve Salazar <anibal@debian.org> +Last-Update: 2014-08-15 + +From: "Daniel Richard G." <skunk@iSKUNK.ORG> +Subject: Re: ssmtp: Partial loss of message body, sending message to wrong recipicients +Date: Thu, 19 Jun 2014 14:44:30 -0400 + +Attached is a patch against the original 2.64 source that should address +this bug, and hopefully not break anything. An overview of my changes: + +* Added code to standarise() to drop the trailing '\r' if the line + originally ended with "\r\n". + +* Added a check to header_parse() that effectively converts an "\r\n" in + the input into '\n'. + +* Added a conditional so that header_parse() doesn't pass the empty + string to header_save()---a behavior I observed in testing, at the end + of a header block with "\r\n" line endings. + +* Simplified the last if(in_header) conditional in header_parse(), + because it erroneously assumes that if in_header == True, then c could + have some value other than EOF. (See the condition on the previous + "while" loop, and the lack of any other way to exit said loop.) + + header_parse() will now properly grab a header if fed a message + without a body (i.e. no "\n\n" ending the header block), although this + code will still drop a header if there is no newline at the end. + +Christoph, thank you for your excellent analysis, and the test cases. I +made use of them, and with my changes sSMTP appears to do the right +thing. + +Debian patch from: https://sources.debian.net/patches/ssmtp/2.64-8/ + +Upstream-Status: Backport [debian] + +Signed-off-by: Andre McCurdy <armccurdy@gmail.com> + +Index: ssmtp-2.64/ssmtp.c +=================================================================== +--- ssmtp-2.64.orig/ssmtp.c ++++ ssmtp-2.64/ssmtp.c +@@ -375,6 +375,12 @@ bool_t standardise(char *str, bool_t *li + if((p = strchr(str, '\n'))) { + *p = (char)NULL; + *linestart = True; ++ ++ /* If the line ended in "\r\n", then drop the '\r' too */ ++ sl = strlen(str); ++ if(sl >= 1 && str[sl - 1] == '\r') { ++ str[sl - 1] = (char)NULL; ++ } + } + return(leadingdot); + } +@@ -768,6 +774,14 @@ void header_parse(FILE *stream) + } + len++; + ++ if(l == '\r' && c == '\n') { ++ /* Properly handle input that already has "\r\n" ++ line endings; see https://bugs.debian.org/584162 */ ++ l = (len >= 2 ? *(q - 2) : '\n'); ++ q--; ++ len--; ++ } ++ + if(l == '\n') { + switch(c) { + case ' ': +@@ -790,7 +804,9 @@ void header_parse(FILE *stream) + if((q = strrchr(p, '\n'))) { + *q = (char)NULL; + } +- header_save(p); ++ if(len > 0) { ++ header_save(p); ++ } + + q = p; + len = 0; +@@ -800,35 +816,12 @@ void header_parse(FILE *stream) + + l = c; + } +- if(in_header) { +- if(l == '\n') { +- switch(c) { +- case ' ': +- case '\t': +- /* Must insert '\r' before '\n's embedded in header +- fields otherwise qmail won't accept our mail +- because a bare '\n' violates some RFC */ +- +- *(q - 1) = '\r'; /* Replace previous \n with \r */ +- *q++ = '\n'; /* Insert \n */ +- len++; +- +- break; +- +- case '\n': +- in_header = False; +- +- default: +- *q = (char)NULL; +- if((q = strrchr(p, '\n'))) { +- *q = (char)NULL; +- } +- header_save(p); +- +- q = p; +- len = 0; +- } ++ if(in_header && l == '\n') { ++ /* Got EOF while reading the header */ ++ if((q = strrchr(p, '\n'))) { ++ *q = (char)NULL; + } ++ header_save(p); + } + (void)free(p); + } diff --git a/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb b/meta-networking/recipes-support/ssmtp/ssmtp_2.64.bb index 9d4864d79a..07e3ffed42 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 @@ SUMMARY = "extremely simple MTA to get mail off the system to a mail hub" HOMEPAGE = "http://packages.qa.debian.org/s/ssmtp.html" - LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=0c56db0143f4f80c369ee3af7425af6e" -SRC_URI = "\ - ${DEBIAN_MIRROR}/main/s/${BPN}/${BPN}_${PV}.orig.tar.bz2 \ +SRC_URI = "${DEBIAN_MIRROR}/main/s/${BPN}/${BPN}_${PV}.orig.tar.bz2 \ + file://ssmtp-bug584162-fix.patch \ file://build-ouside_srcdir.patch \ file://use-DESTDIR.patch \ - " - -EXTRA_OECONF += "--mandir=${mandir}" - -EXTRA_OEMAKE = "GEN_CONFIG='/bin/true'" +" SRC_URI[md5sum] = "65b4e0df4934a6cd08c506cabcbe584f" SRC_URI[sha256sum] = "22c37dc90c871e8e052b2cab0ad219d010fa938608cd66b21c8f3c759046fa36" -inherit autotools pkgconfig +inherit autotools + +PACKAGECONFIG ?= "ssl ${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)}" + +PACKAGECONFIG[ssl] = "--enable-ssl,--disable-ssl,openssl" +PACKAGECONFIG[ipv6] = "--enable-inet6,--disable-inet6" + +EXTRA_OECONF += "--mandir=${mandir}" + +EXTRA_OEMAKE = "GEN_CONFIG='/bin/true'" -DEPENDS += "openssl inetutils" +LDFLAGS += "${@bb.utils.contains('PACKAGECONFIG', 'ssl', '-lssl -lcrypto', '', d)}" do_install_append () { install -d ${D}${mandir}/ |