commit:     a25cf19d6f0dd41643c17cdfebbd87fde5e0e336
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Mar  4 02:50:27 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Mar  4 02:51:32 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a25cf19d

sys-apps/systemd: backport another stringop-truncation fix

No revbump as this is a false positive (the stringop-* warnings are known
to be noisy/flaky).

Closes: https://bugs.gentoo.org/916518
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/255-install-format-overflow.patch        | 43 ++++++++++++++++++++++
 sys-apps/systemd/systemd-255.4.ebuild              |  1 +
 2 files changed, 44 insertions(+)

diff --git a/sys-apps/systemd/files/255-install-format-overflow.patch 
b/sys-apps/systemd/files/255-install-format-overflow.patch
new file mode 100644
index 000000000000..3dca7d8e8ec7
--- /dev/null
+++ b/sys-apps/systemd/files/255-install-format-overflow.patch
@@ -0,0 +1,43 @@
+https://github.com/systemd/systemd-stable/commit/f85d2c6d1023b1fe558142440b1d63c4fc5f7c98
+https://github.com/systemd/systemd/issues/30448
+https://bugs.gentoo.org/916518
+
+From f85d2c6d1023b1fe558142440b1d63c4fc5f7c98 Mon Sep 17 00:00:00 2001
+From: Luca Boccassi <bl...@debian.org>
+Date: Sat, 24 Feb 2024 12:05:44 +0000
+Subject: [PATCH] install: fix compiler warning about empty directive argument
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+On ppc64el with gcc 13.2 on Ubuntu 24.04:
+
+3s In file included from ../src/basic/macro.h:386,
+483s                  from ../src/basic/alloc-util.h:10,
+483s                  from ../src/shared/install.c:12:
+483s ../src/shared/install.c: In function ‘install_changes_dump’:
+483s ../src/shared/install.c:432:64: error: ‘%s’ directive argument is null 
[-Werror=format-overflow=]
+483s   432 |                         err = log_error_errno(changes[i].type, 
"Failed to %s unit, unit %s does not exist.",
+483s       |                                                                
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+483s ../src/shared/install.c:432:75: note: format string is defined here
+483s   432 |                         err = log_error_errno(changes[i].type, 
"Failed to %s unit, unit %s does not exist.",
+
+(cherry picked from commit 8040fa55a1cbc34dede3205a902095ecd26c21e3)
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -340,9 +340,12 @@ void install_changes_dump(int r, const char *verb, const 
InstallChange *changes,
+         assert(verb || r >= 0);
+ 
+         for (size_t i = 0; i < n_changes; i++) {
+-                if (changes[i].type < 0)
+-                        assert(verb);
+                 assert(changes[i].path);
++                /* This tries to tell the compiler that it's safe to use 
'verb' in a string format if there
++                 * was an error, but the compiler doesn't care and fails 
anyway, so strna(verb) is used
++                 * too. */
++                assert(verb || changes[i].type >= 0);
++                verb = strna(verb);
+ 
+                 /* When making changes here, make sure to also change 
install_error() in dbus-manager.c. */
+ 
+

diff --git a/sys-apps/systemd/systemd-255.4.ebuild 
b/sys-apps/systemd/systemd-255.4.ebuild
index 183166373f1d..c1d288b695d5 100644
--- a/sys-apps/systemd/systemd-255.4.ebuild
+++ b/sys-apps/systemd/systemd-255.4.ebuild
@@ -248,6 +248,7 @@ src_unpack() {
 
 src_prepare() {
        local PATCHES=(
+               "${FILESDIR}"/255-install-format-overflow.patch
        )
 
        if ! use vanilla; then

Reply via email to