]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
machined: Relax path checks for Copy{From,To}
authorRichard Maw <richard.maw@codethink.co.uk>
Tue, 4 Aug 2015 08:55:04 +0000 (08:55 +0000)
committerRichard Maw <richard.maw@codethink.co.uk>
Tue, 4 Aug 2015 09:11:23 +0000 (09:11 +0000)
Absolute paths should be sufficient to prevent funny business,
and while path_is_safe() checks this, it also checks whether the path
contains . or .. components, which while odd, aren't a security risk.

src/machine/machine-dbus.c

index dc42ffdc52aebe253e5d985813bc6dcce4fb7d44..7658d7146db892fd0865cb8ba9c2a407b410bc75 100644 (file)
@@ -825,13 +825,13 @@ int bus_machine_method_copy(sd_bus_message *message, void *userdata, sd_bus_erro
         if (r < 0)
                 return r;
 
-        if (!path_is_absolute(src) || !path_is_safe(src))
-                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Source path must be absolute and not contain ../.");
+        if (!path_is_absolute(src))
+                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Source path must be absolute.");
 
         if (isempty(dest))
                 dest = src;
-        else if (!path_is_absolute(dest) || !path_is_safe(dest))
-                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Destination path must be absolute and not contain ../.");
+        else if (!path_is_absolute(dest))
+                return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Destination path must be absolute.");
 
         r = bus_verify_polkit_async(
                         message,