mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-08-25 05:21:31 +00:00
ssmtp: upgrade 2.64 -> 2.66
Bump to the upstream 2.66 orig tarball (now .orig.tar.gz instead of .orig.tar.bz2) from Debian. - ssmtp-bug584162-fix.patch dropped: the fix (dropping trailing '\r' in standardise() and the header_parse() EOF/empty-header handling) is already present verbatim in the 2.66 source. - 0001-ssmtp-Correct-the-null-pointer-assignment-to-char-po.patch dropped: upstream already initializes all the char pointers with NULL instead of (char)NULL. - 0001-Fix-incompatible-pointer-types-error-with-gcc-15.patch rebased: the call site already casts to (sighandler_t)handler in 2.66, so only the handler() signature hunk is still needed; the call-site hunk was dropped as it no longer applies and is unnecessary once the signature takes an int. - use-DESTDIR.patch rebased: upstream 2.66 already appends $(LDFLAGS) in the ssmtp link rule, so that hunk was dropped; the DESTDIR hunks for install/uninstall are still needed and were regenerated against the new Makefile.in. - build-ouside_srcdir.patch and 0001-include-libgen.h-for-basename.patch kept unchanged, still needed, apply cleanly. Build-verified: ssmtp builds and packages successfully. AI-Generated: Uses Claude Code Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
+11
-12
@@ -17,11 +17,19 @@ TOPDIR/tmp/work/core2-64-oe-linux/ssmtp/2.64/recipe-sysroot/usr/include/signal.h
|
||||
1393 | void handler(void)
|
||||
| ^~~~~~~
|
||||
|
||||
Note: as of ssmtp 2.66, the call site already reads
|
||||
"(void)signal(SIGALRM, (sighandler_t)handler);", so once handler()'s
|
||||
signature below is changed to take an int argument it matches
|
||||
sighandler_t (void (*)(int)) exactly and the incompatible-pointer-types
|
||||
warning/error is gone. Only the handler() signature hunk from the
|
||||
original patch is still needed; the call-site hunk has been dropped
|
||||
since it no longer applies and is unnecessary.
|
||||
|
||||
Upstream-Status: Inactive-Upstream [This package has been orphaned https://bugs.debian.org/925056]
|
||||
Signed-off-by: mark.yang <mark.yang@lge.com>
|
||||
---
|
||||
ssmtp.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
ssmtp.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ssmtp.c b/ssmtp.c
|
||||
index 4dedaf8..a938d14 100644
|
||||
@@ -35,13 +43,4 @@ index 4dedaf8..a938d14 100644
|
||||
+void handler(__attribute__((unused)) int sig)
|
||||
{
|
||||
extern jmp_buf TimeoutJmpBuf;
|
||||
|
||||
@@ -1451,7 +1451,7 @@ int ssmtp(char *argv[])
|
||||
from = from_format(uad, override_from);
|
||||
|
||||
/* Now to the delivery of the message */
|
||||
- (void)signal(SIGALRM, (void(*)())handler); /* Catch SIGALRM */
|
||||
+ (void)signal(SIGALRM, handler); /* Catch SIGALRM */
|
||||
(void)alarm((unsigned) MAXWAIT); /* Set initial timer */
|
||||
if(setjmp(TimeoutJmpBuf) != 0) {
|
||||
/* Then the timer has gone off and we bail out */
|
||||
|
||||
|
||||
-51
@@ -1,51 +0,0 @@
|
||||
From 58cfb4f86b7fbf19eb643dfba87fdd890b3d4a4a Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 24 Aug 2022 19:27:31 -0700
|
||||
Subject: [PATCH] ssmtp: Correct the null pointer assignment to char pointers
|
||||
|
||||
Fixes
|
||||
error: incompatible integer to pointer conversion initializing 'char *' with an expression of type 'char' [-Wint-conversion]
|
||||
| char *from = (char)NULL; /* Use this as the From: address */
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
ssmtp.c | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/ssmtp.c b/ssmtp.c
|
||||
index a74ba4e..0a719ac 100644
|
||||
--- a/ssmtp.c
|
||||
+++ b/ssmtp.c
|
||||
@@ -55,21 +55,21 @@ bool_t use_oldauth = False; /* use old AUTH LOGIN username style */
|
||||
|
||||
#define ARPADATE_LENGTH 32 /* Current date in RFC format */
|
||||
char arpadate[ARPADATE_LENGTH];
|
||||
-char *auth_user = (char)NULL;
|
||||
-char *auth_pass = (char)NULL;
|
||||
-char *auth_method = (char)NULL; /* Mechanism for SMTP authentication */
|
||||
-char *mail_domain = (char)NULL;
|
||||
-char *from = (char)NULL; /* Use this as the From: address */
|
||||
+char *auth_user = NULL;
|
||||
+char *auth_pass = NULL;
|
||||
+char *auth_method = NULL; /* Mechanism for SMTP authentication */
|
||||
+char *mail_domain = NULL;
|
||||
+char *from = NULL; /* Use this as the From: address */
|
||||
char *hostname;
|
||||
char *mailhost = "mailhub";
|
||||
-char *minus_f = (char)NULL;
|
||||
-char *minus_F = (char)NULL;
|
||||
+char *minus_f = NULL;
|
||||
+char *minus_F = NULL;
|
||||
char *gecos;
|
||||
-char *prog = (char)NULL;
|
||||
+char *prog = NULL;
|
||||
char *root = NULL;
|
||||
char *tls_cert = "/etc/ssl/certs/ssmtp.pem"; /* Default Certificate */
|
||||
-char *uad = (char)NULL;
|
||||
-char *config_file = (char)NULL; /* alternate configuration file */
|
||||
+char *uad = NULL;
|
||||
+char *config_file = NULL; /* alternate configuration file */
|
||||
|
||||
headers_t headers, *ht;
|
||||
|
||||
@@ -1,126 +0,0 @@
|
||||
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);
|
||||
}
|
||||
@@ -1,16 +1,19 @@
|
||||
Use DESTDIR during install/uninstall, this helps
|
||||
with cross or staged builds. Additionally pass LDFLAGS
|
||||
during linking.
|
||||
Use DESTDIR during install/uninstall, this helps
|
||||
with cross or staged builds.
|
||||
|
||||
Note: as of ssmtp 2.66, upstream already appends $(LDFLAGS) to the
|
||||
link command for the ssmtp binary, so that part of the original patch
|
||||
is no longer needed and has been dropped.
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
Upstream-Status: Pending
|
||||
|
||||
|
||||
Index: ssmtp-2.64/Makefile.in
|
||||
Index: ssmtp-2.66/Makefile.in
|
||||
===================================================================
|
||||
--- ssmtp-2.64.orig/Makefile.in
|
||||
+++ ssmtp-2.64/Makefile.in
|
||||
@@ -46,40 +46,40 @@ all: ssmtp
|
||||
--- ssmtp-2.66.orig/Makefile.in
|
||||
+++ ssmtp-2.66/Makefile.in
|
||||
@@ -46,36 +46,36 @@
|
||||
|
||||
.PHONY: install
|
||||
install: ssmtp $(GEN_CONFIG)
|
||||
@@ -67,8 +70,3 @@ Index: ssmtp-2.64/Makefile.in
|
||||
|
||||
# Binaries:
|
||||
ssmtp: $(OBJS)
|
||||
- $(CC) -o ssmtp $(OBJS) @LIBS@ $(CFLAGS)
|
||||
+ $(CC) -o ssmtp $(OBJS) @LIBS@ $(CFLAGS) $(LDFLAGS)
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
|
||||
+3
-5
@@ -3,17 +3,15 @@ HOMEPAGE = "http://packages.qa.debian.org/s/ssmtp.html"
|
||||
LICENSE = "GPL-2.0-only"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=0c56db0143f4f80c369ee3af7425af6e"
|
||||
|
||||
SRC_URI = "${DEBIAN_MIRROR}/main/s/${BPN}/${BPN}_${PV}.orig.tar.bz2 \
|
||||
file://ssmtp-bug584162-fix.patch \
|
||||
SRC_URI = "${DEBIAN_MIRROR}/main/s/${BPN}/${BPN}_${PV}.orig.tar.gz \
|
||||
file://build-ouside_srcdir.patch \
|
||||
file://use-DESTDIR.patch \
|
||||
file://0001-ssmtp-Correct-the-null-pointer-assignment-to-char-po.patch \
|
||||
file://0001-include-libgen.h-for-basename.patch \
|
||||
file://0001-Fix-incompatible-pointer-types-error-with-gcc-15.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "65b4e0df4934a6cd08c506cabcbe584f"
|
||||
SRC_URI[sha256sum] = "22c37dc90c871e8e052b2cab0ad219d010fa938608cd66b21c8f3c759046fa36"
|
||||
SRC_URI[md5sum] = "f9894703fcc559f63cffacfea08f9b75"
|
||||
SRC_URI[sha256sum] = "6e639eafce4c8a3b7782c2a8a2d467be097c5896eae86fcde0f608666ea88249"
|
||||
|
||||
inherit autotools update-alternatives
|
||||
|
||||
Reference in New Issue
Block a user