]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: implement masking of .wants/.requires symlinks
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 5 Feb 2017 01:50:44 +0000 (20:50 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 8 Feb 2017 02:31:59 +0000 (21:31 -0500)
Fixes #1169.
Fixes #4830.

Example log errors:
Feb 04 22:13:28 systemd[1462]: foo.service: Wants dependency on empty_file.service is masked by /home/zbyszek/.config/systemd/user/foo.service.wants/empty_file.service, ignoring
Feb 04 22:13:28 systemd[1462]: foo.service: Wants dependency on masked.service is masked by /home/zbyszek/.config/systemd/user/foo.service.wants/masked.service, ignoring

src/core/load-dropin.c

index 0511fb38efc7ef9cb1986aadefdf5aea6931bd9f..a43b6540ff19f96e4cbe2c614da7c5b75d076387 100644 (file)
@@ -47,6 +47,13 @@ static int process_deps(Unit *u, UnitDependency dependency, const char *dir_suff
 
                 entry = basename(*p);
 
+                if (null_or_empty_path(*p) > 0) {
+                        /* an error usually means an invalid symlink, which is not a mask */
+                        log_unit_debug(u, "%s dependency on %s is masked by %s, ignoring.",
+                                       unit_dependency_to_string(dependency), entry, *p);
+                        continue;
+                }
+
                 r = is_symlink(*p);
                 if (r < 0) {
                         log_unit_warning_errno(u, r, "%s dropin %s unreadable, ignoring: %m",