fs-util: chase_symlinks(): support empty root
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 19 Jan 2018 09:05:28 +0000 (18:05 +0900)
committerLennart Poettering <lennart@poettering.net>
Fri, 19 Jan 2018 10:41:28 +0000 (11:41 +0100)
The commit b1bfb848046e457f3cd623286b8cc1a5e5440023 makes chase_symlinks()
recognize empty string for root as an invalid parameter. However,
empty root is often used e.g. systemd-nspawn.
This makes chase_symlinks() support empty string safely.

Fixes #7927.

src/basic/fs-util.c

index cb56e03..4bf25e3 100644 (file)
@@ -660,13 +660,9 @@ int chase_symlinks(const char *path, const char *original_root, unsigned flags,
          * function what to do when encountering a symlink with an absolute path as directory: prefix it by the
          * specified path. */
 
-        if (original_root) {
-                if (isempty(original_root)) /* What's this even supposed to mean? */
-                        return -EINVAL;
-
-                if (path_equal(original_root, "/")) /* A root directory of "/" is identical to none */
-                        original_root = NULL;
-        }
+        /* A root directory of "/" or "" is identical to none */
+        if (isempty(original_root) || path_equal(original_root, "/"))
+                original_root = NULL;
 
         if (original_root) {
                 r = path_make_absolute_cwd(original_root, &root);