]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: fix assert when AddDependencyUnitFiles is called with invalid parameter
authorLuca Boccassi <luca.boccassi@gmail.com>
Mon, 6 Jan 2025 18:16:29 +0000 (18:16 +0000)
committerLuca Boccassi <luca.boccassi@gmail.com>
Tue, 7 Jan 2025 18:26:13 +0000 (18:26 +0000)
unit_file_add_dependency() asserts, so check before calling it that the
type is expected, or return EINVAL to the caller.

root@localhost:~# busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager AddDependencyUnitFiles "asssbb" 0 uwhatm8 After 1 1

Broadcast message from systemd-journald@localhost (Mon 2025-01-06 18:12:14 UTC):

systemd[1]: Caught <ABRT>, from our own process.

Fixes https://github.com/systemd/systemd/issues/35882

(cherry picked from commit d87dc74e8f1a30d72a0f202e411400bab34ab55a)

src/core/dbus-manager.c

index 20b05446b6cf5f81a0684d00fa2441ffb9439b01..c4a7e2a20bc7e9ca014a7dda004e0ba81aed6205 100644 (file)
@@ -2760,7 +2760,7 @@ static int method_add_dependency_unit_files(sd_bus_message *message, void *userd
         flags = unit_file_bools_to_flags(runtime, force);
 
         dep = unit_dependency_from_string(type);
-        if (dep < 0)
+        if (dep < 0 || !IN_SET(dep, UNIT_WANTS, UNIT_REQUIRES))
                 return -EINVAL;
 
         r = unit_file_add_dependency(m->runtime_scope, flags, NULL, l, target, dep, &changes, &n_changes);