]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bus-unit-util: do not trigger assertion on "ExecStart=@"
authorMike Yuan <me@yhndnzj.com>
Thu, 17 Apr 2025 21:57:57 +0000 (23:57 +0200)
committerMike Yuan <me@yhndnzj.com>
Wed, 7 May 2025 16:32:18 +0000 (18:32 +0200)
extract_first_word() normalizes empty string to NULL,
triggering the assertion on input string in strv_split_full().

src/shared/bus-unit-util.c

index c0572aff15038f8cf113c603e3599f7313de3bc2..c7bb1b2533480e939dc18f008209d2d741bdd113 100644 (file)
@@ -354,6 +354,10 @@ static int bus_append_exec_command(sd_bus_message *m, const char *field, const c
                 r = extract_first_word(&eq, &path, NULL, EXTRACT_UNQUOTE|EXTRACT_CUNESCAPE);
                 if (r < 0)
                         return log_error_errno(r, "Failed to parse path: %m");
+                if (r == 0)
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No executable path specified, refusing.");
+                if (isempty(eq))
+                        return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Got empty command line, refusing.");
         }
 
         r = strv_split_full(&l, eq, NULL, EXTRACT_UNQUOTE|EXTRACT_CUNESCAPE);