commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "L (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (VFS-590) SFTP moveTo operation might fail on permission checks even if the operation itself might succeed
Date Mon, 30 Nov 2015 10:52:11 GMT

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

L updated VFS-590:
------------------
    Description: 
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.



  was:
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 while 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.




> 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
>
> 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
(v6.3.4#6332)

Mime
View raw message