You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Rémi Villé (Jira)" <ji...@apache.org> on 2020/05/14 08:34:00 UTC

[jira] [Issue Comment Deleted] (VFS-590) SFTP moveTo operation might fail on permission checks even if the operation itself might succeed

     [ https://issues.apache.org/jira/browse/VFS-590?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rémi Villé updated VFS-590:
---------------------------
    Comment: was deleted

(was: Hello,

There's a similar issue if you call sftpFile.findFiles(selector) before localFile.copyFrom(sftpFile, selector) because the second call reset file stats in the cache (in .AbstractFileSystem#resolveFile() =>
{code}
if (getFileSystemManager().getCacheStrategy().equals(CacheStrategy.ON_RESOLVE)) {
 file.refresh();
}
{code}
)
Then the stats are retrieved one by one.)

> SFTP moveTo operation might fail on permission checks even if the operation itself might succeed
> ------------------------------------------------------------------------------------------------
>
>                 Key: VFS-590
>                 URL: https://issues.apache.org/jira/browse/VFS-590
>             Project: Commons VFS
>          Issue Type: Bug
>    Affects Versions: Nightly Builds
>            Reporter: L
>            Priority: Major
>             Fix For: 2.5.0
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> Continuing with SFTP moveTo, see VFS-588 and VFS-589 for more details.
> The permission checks that VFS performs during moveTo() can result in failure. 
> org.apache.commons.vfs2.provider.AbstractFileObject.moveTo(final FileObject destFile) starts with some checks:
> {code:java}
>     @Override
>     public void moveTo(final FileObject destFile) throws FileSystemException
>     {
>         if (canRenameTo(destFile))
>         {
>             if (!getParent().isWriteable())
>             {
>                 throw new FileSystemException("vfs.provider/rename-parent-read-only.error",
>                         getName(),
>                         getParent().getName());
>             }
>         }
>         else
>         {
>             if (!isWriteable())
>             {
>                 throw new FileSystemException("vfs.provider/rename-read-only.error", getName());
>             }
>         }
> {code}
> The problem is: isWriteable() might fail or even hang. Performing moveTo without this check might successfully rename the file.
> isWriteable() in case of SFTP can fail if the server disables SSH channelExec. Or if it does not support "id" command.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)