Zbigniew Jędrzejewski-Szmek 9a0266
From fef2e88b92287aa97ce21eee22aca0c74dfa6570 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 9a0266
From: Frantisek Sumsal <frantisek@sumsal.cz>
Zbigniew Jędrzejewski-Szmek 9a0266
Date: Fri, 3 Mar 2023 12:17:27 +0100
Zbigniew Jędrzejewski-Szmek 9a0266
Subject: [PATCH] systemctl: explicitly cast the constants to uint64_t
Zbigniew Jędrzejewski-Szmek 9a0266
Zbigniew Jędrzejewski-Szmek 9a0266
Otherwise under certain conditions `va_arg()` might get garbage instead
Zbigniew Jędrzejewski-Szmek 9a0266
of the expected value, i.e.:
Zbigniew Jędrzejewski-Szmek 9a0266
Zbigniew Jędrzejewski-Szmek 9a0266
$ sudo build-o0/systemctl disable asdfasfaf
Zbigniew Jędrzejewski-Szmek 9a0266
sd_bus_message_appendv: Got uint64_t: 0
Zbigniew Jędrzejewski-Szmek 9a0266
Failed to disable unit: Unit file asdfasfaf.service does not exist.
Zbigniew Jędrzejewski-Szmek 9a0266
Zbigniew Jędrzejewski-Szmek 9a0266
$ sudo build-o1/systemctl disable asdfasfaf
Zbigniew Jędrzejewski-Szmek 9a0266
sd_bus_message_appendv: Got uint64_t: 7954875719681572864
Zbigniew Jędrzejewski-Szmek 9a0266
Failed to disable unit: Invalid argument
Zbigniew Jędrzejewski-Szmek 9a0266
Zbigniew Jędrzejewski-Szmek 9a0266
(reproduced on an armv7hl machine)
Zbigniew Jędrzejewski-Szmek 9a0266
Zbigniew Jędrzejewski-Szmek 9a0266
Resolves: #26568
Zbigniew Jędrzejewski-Szmek 9a0266
Follow-up to: bf1bea43f15
Zbigniew Jędrzejewski-Szmek 9a0266
Related issue: https://github.com/systemd/systemd/pull/14470#discussion_r362893735
Zbigniew Jędrzejewski-Szmek 9a0266
Zbigniew Jędrzejewski-Szmek 9a0266
(cherry picked from commit c63bfd0884cf20e48befbee49d41f667660a8802)
Zbigniew Jędrzejewski-Szmek 9a0266
---
Zbigniew Jędrzejewski-Szmek 9a0266
 src/systemctl/systemctl-enable.c | 2 +-
Zbigniew Jędrzejewski-Szmek 9a0266
 1 file changed, 1 insertion(+), 1 deletion(-)
Zbigniew Jędrzejewski-Szmek 9a0266
Zbigniew Jędrzejewski-Szmek 9a0266
diff --git a/src/systemctl/systemctl-enable.c b/src/systemctl/systemctl-enable.c
Zbigniew Jędrzejewski-Szmek 9a0266
index 86d9f602fa..f94a286122 100644
Zbigniew Jędrzejewski-Szmek 9a0266
--- a/src/systemctl/systemctl-enable.c
Zbigniew Jędrzejewski-Szmek 9a0266
+++ b/src/systemctl/systemctl-enable.c
Zbigniew Jędrzejewski-Szmek 9a0266
@@ -211,7 +211,7 @@ int verb_enable(int argc, char *argv[], void *userdata) {
Zbigniew Jędrzejewski-Szmek 9a0266
 
Zbigniew Jędrzejewski-Szmek 9a0266
                 if (send_runtime) {
Zbigniew Jędrzejewski-Szmek 9a0266
                         if (streq(method, "DisableUnitFilesWithFlagsAndInstallInfo"))
Zbigniew Jędrzejewski-Szmek 9a0266
-                                r = sd_bus_message_append(m, "t", arg_runtime ? UNIT_FILE_RUNTIME : 0);
Zbigniew Jędrzejewski-Szmek 9a0266
+                                r = sd_bus_message_append(m, "t", arg_runtime ? (uint64_t) UNIT_FILE_RUNTIME : UINT64_C(0));
Zbigniew Jędrzejewski-Szmek 9a0266
                         else
Zbigniew Jędrzejewski-Szmek 9a0266
                                 r = sd_bus_message_append(m, "b", arg_runtime);
Zbigniew Jędrzejewski-Szmek 9a0266
                         if (r < 0)