]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tree-wide: be more careful when passing literal integers to "t" bus message fields
authorLennart Poettering <lennart@poettering.net>
Wed, 21 Feb 2024 10:03:35 +0000 (11:03 +0100)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 21 Feb 2024 19:31:50 +0000 (04:31 +0900)
Since we use varargs for sd_message_append() we need to make sure the
parameters we pass are actually 64bit wide, if "t" is used. Hence cast
appropriately if necessary.

I went through the whole tree, and in most cases we got it right, but
there are some cases we missed so far.

Inspired by: #31420

src/core/dbus-execute.c
src/core/dbus-service.c
src/core/dbus-unit.c
src/machine/machinectl.c
src/portable/portablectl.c
src/shared/bus-unit-util.c

index b2e5ae4f85feb11007a8f43035395586baee0d28..6d2247a8401a6235298ac670f8d53be315a0b34a 100644 (file)
@@ -492,7 +492,7 @@ static int property_get_bind_paths(
                                 c->bind_mounts[i].source,
                                 c->bind_mounts[i].destination,
                                 c->bind_mounts[i].ignore_enoent,
-                                c->bind_mounts[i].recursive ? (uint64_t) MS_REC : (uint64_t) 0);
+                                c->bind_mounts[i].recursive ? (uint64_t) MS_REC : UINT64_C(0));
                 if (r < 0)
                         return r;
         }
@@ -911,7 +911,7 @@ static int bus_property_get_exec_dir_symlink(
 
         for (size_t i = 0; i < d->n_items; i++)
                 STRV_FOREACH(dst, d->items[i].symlinks) {
-                        r = sd_bus_message_append(reply, "(sst)", d->items[i].path, *dst, 0 /* flags, unused for now */);
+                        r = sd_bus_message_append(reply, "(sst)", d->items[i].path, *dst, UINT64_C(0) /* flags, unused for now */);
                         if (r < 0)
                                 return r;
                 }
index 77cf6f003d7ada1d92a53f8f4a319d5a5c4a7ce8..ff970df957485a3a6b47ecb8c05743397103927a 100644 (file)
@@ -61,7 +61,7 @@ static int property_get_open_files(
                 return r;
 
         LIST_FOREACH(open_files, of, *open_files) {
-                r = sd_bus_message_append(reply, "(sst)", of->path, of->fdname, of->flags);
+                r = sd_bus_message_append(reply, "(sst)", of->path, of->fdname, (uint64_t) of->flags);
                 if (r < 0)
                         return r;
         }
index eda9f6c74e18530be2b56d3728394789809811d6..9e8ff2cc13080d121ad638f8ac790c5fcc41b45f 100644 (file)
@@ -1239,7 +1239,7 @@ static int property_get_cgroup_id(
         assert(reply);
 
         CGroupRuntime *crt = unit_get_cgroup_runtime(u);
-        return sd_bus_message_append(reply, "t", crt ? crt->cgroup_id : 0);
+        return sd_bus_message_append(reply, "t", crt ? crt->cgroup_id : UINT64_C(0));
 }
 
 static int append_process(sd_bus_message *reply, const char *p, PidRef *pid, Set *pids) {
index e1bc9324439fba4c3491ceac69a007c988adbd83..9c0aa035e5bcf3f5230c89389cce7b12d3b8878d 100644 (file)
@@ -1130,7 +1130,7 @@ static int copy_files(int argc, char *argv[], void *userdata) {
                 return bus_log_create_error(r);
 
         if (arg_force) {
-                r = sd_bus_message_append(m, "t", MACHINE_COPY_REPLACE);
+                r = sd_bus_message_append(m, "t", (uint64_t) MACHINE_COPY_REPLACE);
                 if (r < 0)
                         return bus_log_create_error(r);
         }
index 1867fc8a1d03bcc21403e2d578f4f67f10c0c049..db5e4febe0a9b8954ede8599d3b19707454a44d9 100644 (file)
@@ -1171,7 +1171,7 @@ static int is_image_attached(int argc, char *argv[], void *userdata) {
                 return r;
 
         if (!strv_isempty(arg_extension_images)) {
-                r = sd_bus_message_append(m, "t", 0);
+                r = sd_bus_message_append(m, "t", UINT64_C(0));
                 if (r < 0)
                         return bus_log_create_error(r);
         }
index dae7dd5e36f9420ed1a5c073bc09cb55dda9dc6e..53da9bc3c2469d79e259d333e431b7172c5ca120 100644 (file)
@@ -1419,12 +1419,12 @@ static int bus_append_execute_property(sd_bus_message *m, const char *field, con
                         if (r < 0)
                                 return log_error_errno(r, "Failed to parse resource limit: %s", eq);
 
-                        r = sd_bus_message_append(m, "(sv)", field, "t", l.rlim_max);
+                        r = sd_bus_message_append(m, "(sv)", field, "t", (uint64_t) l.rlim_max);
                         if (r < 0)
                                 return bus_log_create_error(r);
 
                         sn = strjoina(field, "Soft");
-                        r = sd_bus_message_append(m, "(sv)", sn, "t", l.rlim_cur);
+                        r = sd_bus_message_append(m, "(sv)", sn, "t", (uint64_t) l.rlim_cur);
                         if (r < 0)
                                 return bus_log_create_error(r);
 
@@ -2167,7 +2167,7 @@ static int bus_append_execute_property(sd_bus_message *m, const char *field, con
                                 return bus_log_create_error(r);
 
                         STRV_FOREACH_PAIR(source, destination, symlinks) {
-                                r = sd_bus_message_append(m, "(sst)", *source, *destination, 0);
+                                r = sd_bus_message_append(m, "(sst)", *source, *destination, UINT64_C(0));
                                 if (r < 0)
                                         return bus_log_create_error(r);
                         }