]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
busctl: don't hit an assert if we call invalid bus method names
authorLennart Poettering <lennart@poettering.net>
Fri, 1 Mar 2024 13:42:34 +0000 (14:42 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 1 Mar 2024 21:24:01 +0000 (22:24 +0100)
We should validate this explicitly and generate a clear error string,
rather then hit an assert() later in the code.

src/busctl/busctl.c

index 6314ff8d1d9513a4d186770a227604cb8eed2742..9c750fcd53c3fb3c189d689dfa074c54522f2bae 100644 (file)
@@ -2021,6 +2021,15 @@ static int call(int argc, char **argv, void *userdata) {
         if (r < 0)
                 return r;
 
+        if (!service_name_is_valid(argv[1]))
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid service name: %s", argv[1]);
+        if (!object_path_is_valid(argv[2]))
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid object path: %s", argv[2]);
+        if (!interface_name_is_valid(argv[3]))
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid interface name: %s", argv[3]);
+        if (!member_name_is_valid(argv[4]))
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid member name: %s", argv[4]);
+
         r = sd_bus_message_new_method_call(bus, &m, argv[1], argv[2], argv[3], argv[4]);
         if (r < 0)
                 return bus_log_create_error(r);