diff options
author | Frantisek Sumsal <frantisek@sumsal.cz> | 2023-03-03 12:17:27 +0100 |
---|---|---|
committer | Luca Boccassi <luca.boccassi@gmail.com> | 2023-03-03 15:57:34 +0000 |
commit | c63bfd0884cf20e48befbee49d41f667660a8802 (patch) | |
tree | 901c556cb406dfa84fe532f9a26c17bbb7f815f8 /src/systemctl | |
parent | 0c70d5e623a725c4e2f6ace0a492a7043c930d53 (diff) | |
download | systemd-c63bfd0884cf20e48befbee49d41f667660a8802.tar.gz |
systemctl: explicitly cast the constants to uint64_t
Otherwise under certain conditions `va_arg()` might get garbage instead
of the expected value, i.e.:
$ sudo build-o0/systemctl disable asdfasfaf
sd_bus_message_appendv: Got uint64_t: 0
Failed to disable unit: Unit file asdfasfaf.service does not exist.
$ sudo build-o1/systemctl disable asdfasfaf
sd_bus_message_appendv: Got uint64_t: 7954875719681572864
Failed to disable unit: Invalid argument
(reproduced on an armv7hl machine)
Resolves: #26568
Follow-up to: bf1bea43f15
Related issue: https://github.com/systemd/systemd/pull/14470#discussion_r362893735
Diffstat (limited to 'src/systemctl')
-rw-r--r-- | src/systemctl/systemctl-enable.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/systemctl/systemctl-enable.c b/src/systemctl/systemctl-enable.c index 4ebe5888ac..a9c6f3a742 100644 --- a/src/systemctl/systemctl-enable.c +++ b/src/systemctl/systemctl-enable.c @@ -211,7 +211,7 @@ int verb_enable(int argc, char *argv[], void *userdata) { if (send_runtime) { if (streq(method, "DisableUnitFilesWithFlagsAndInstallInfo")) - r = sd_bus_message_append(m, "t", arg_runtime ? UNIT_FILE_RUNTIME : 0); + r = sd_bus_message_append(m, "t", arg_runtime ? (uint64_t) UNIT_FILE_RUNTIME : UINT64_C(0)); else r = sd_bus_message_append(m, "b", arg_runtime); if (r < 0) |