chiark / gitweb /
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)
committerSven Eden <yamakuzure@gmx.net>
Wed, 30 May 2018 05:50:11 +0000 (07:50 +0200)
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 bd7e3db64207f3034e6f9a26824f2d59a5d82dca..07aeff0af63b73a551a0f9f52f350328429e3def 100644 (file)
@@ -675,13 +675,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);