From: Lennart Poettering Date: Fri, 1 Mar 2024 13:42:34 +0000 (+0100) Subject: busctl: don't hit an assert if we call invalid bus method names X-Git-Tag: v256-rc1~679 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5f76155e65ac21aca1ccbe945f1bfdd7feeb270b;p=thirdparty%2Fsystemd.git busctl: don't hit an assert if we call invalid bus method names We should validate this explicitly and generate a clear error string, rather then hit an assert() later in the code. --- diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index 6314ff8d1d9..9c750fcd53c 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -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);