Package: libesmtp
Severity: normal
Tags: patch
User: [email protected]
Usertags: origin-ubuntu noble ubuntu-patch
X-Debbugs-Cc: [email protected]
Dear Maintainer,
Apologies for submitting this as only one report. libesmtp was failing
on Ubuntu on armhf only because although strlcpy is now in glibc, the
declaration is only found if _DEFAULT_SOURCE or _BSD_SOURCE is defined.
While looking at this I saw some scary warnings about the date handling
in headers.c which I fixed the easy bits of.
In Ubuntu, the attached patch was applied to achieve the following:
* d/patches/time64: cast time_t values to long long before passing to
*printf functions (code storing time_t values in void* variables will
still break in 2038).
* d/patches/default-source: define _DEFAULT_SOURCE to get access to
prototype of strlcpy.
Thanks for considering the patch.
Cheers,
mwh
-- System Information:
Debian Release: trixie/sid
APT prefers mantic-updates
APT policy: (500, 'mantic-updates'), (500, 'mantic-security'), (500,
'mantic'), (100, 'mantic-backports')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.5.0-27-generic (SMP w/16 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8),
LANGUAGE=en_NZ.UTF-8:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru libesmtp-1.1.0/debian/patches/default-source
libesmtp-1.1.0/debian/patches/default-source
--- libesmtp-1.1.0/debian/patches/default-source 1970-01-01
12:00:00.000000000 +1200
+++ libesmtp-1.1.0/debian/patches/default-source 2024-04-11
11:37:59.000000000 +1200
@@ -0,0 +1,10 @@
+--- a/meson.build
++++ b/meson.build
+@@ -30,6 +30,7 @@
+
################################################################################
+ cflags = [
+ '-D_POSIX_C_SOURCE=200809L',
++ '-D_DEFAULT_SOURCE',
+ ]
+
+ cflags_warnings = [
diff -Nru libesmtp-1.1.0/debian/patches/series
libesmtp-1.1.0/debian/patches/series
--- libesmtp-1.1.0/debian/patches/series 2023-08-19 22:04:32.000000000
+1200
+++ libesmtp-1.1.0/debian/patches/series 2024-04-11 11:37:24.000000000
+1200
@@ -1 +1,3 @@
meson-build-soname
+time64
+default-source
diff -Nru libesmtp-1.1.0/debian/patches/time64
libesmtp-1.1.0/debian/patches/time64
--- libesmtp-1.1.0/debian/patches/time64 1970-01-01 12:00:00.000000000
+1200
+++ libesmtp-1.1.0/debian/patches/time64 2024-04-11 11:37:18.000000000
+1200
@@ -0,0 +1,16 @@
+--- a/headers.c
++++ b/headers.c
+@@ -170,11 +170,11 @@
+ {
+ #ifdef HAVE_GETTIMEOFDAY
+ if (gettimeofday (&tv, NULL) != -1) /* This shouldn't fail ... */
+- snprintf (buf, sizeof buf, "%ld.%ld.%d@%s", tv.tv_sec, tv.tv_usec,
++ snprintf (buf, sizeof buf, "%lld.%lld.%d@%s", (long
long)tv.tv_sec, (long long)tv.tv_usec,
+ getpid (), message->session->localhost);
+ else /* ... but if it does fall back to using time() */
+ #endif
+- snprintf (buf, sizeof buf, "%ld.%d@%s", time (NULL),
++ snprintf (buf, sizeof buf, "%lld.%d@%s", (long long)time (NULL),
+ getpid (), message->session->localhost);
+ message_id = buf;
+ }