SFTP uri is throwing error when .. is using in path
---------------------------------------------------

                 Key: VFS-376
                 URL: https://issues.apache.org/jira/browse/VFS-376
             Project: Commons VFS
          Issue Type: Bug
    Affects Versions: 2.0
            Reporter: Ajesh babu
            Priority: Blocker


Hi
We are using apache commons vfs2 for sftp file upload & download , but in one 
scenario it is always giving an error like
"SEVERE: FileSystemException ->org.apache.commons.vfs2.FileSystemException: 
Invalid absolute URI "

The uri is like 
"sftp://sftpuser:{AFF12398KYUJN982FGTB}@172.24.0.114:22/../../../../app/utenti/sftpuser/output/transaction_CARTASI_20200429083817.csv";

The user home directory of sftpuser is 'app/utenti/sftpuser' , we want to use 
another directory which is not under app/utenti/sftpuser, so we tried to 
traverse the parent directory using ../../ but UriParser:normalisePath() method 
is always giving error ,
in the below code portion

// A '..' element - remove the previous element
                if (startElem == startFirstElem)
                {
                    // Previous element is missing
                    throw new FileSystemException(
                            "vfs.provider/invalid-relative-path.error");
                }

But in jdk URI it is saying that

public URI normalize()

    Normalizes this URI's path.

    If this URI is opaque, or if its path is already in normal form, then this 
URI is returned. Otherwise a new URI is constructed that is identical to this 
URI except that its path is computed by normalizing this URI's path in a manner 
consistent with RFC 2396, section 5.2, step 6, sub-steps c through f; that is:

       1.

          All "." segments are removed.
       2.

          If a ".." segment is preceded by a non-".." segment then both of 
these segments are removed. This step is repeated until it is no longer 
applicable.
       3.

          If the path is relative, and if its first segment contains a colon 
character (':'), then a "." segment is prepended. This prevents a relative URI 
with a path such as "a:b/c/d" from later being re-parsed as an opaque URI with 
a scheme of "a" and a scheme-specific part of "b/c/d". (Deviation from RFC 
2396) 

    A normalized path will begin with one or more ".." segments if there were 
insufficient non-".." segments preceding them to allow their removal. A 
normalized path will begin with a "." segment if one was inserted by step 3 
above. Otherwise, a normalized path will not contain any "." or ".." segments.

    Returns:
        A URI equivalent to this URI, but whose path is in normal form

So can you please tell us how can we use ../../ in a uri for traversing to the 
parent directory.

If we are passing the path like

sftp://sftpuser:{AFF12398KYUJN982FGTB}@172.24.0.114:22/output/transaction_CARTASI_20200429083817.csv
 this it is working fine, in this case 'output' directory is under sftpuser's 
home directory (app/utenti/sftpuser}

Please treat it as urgent and pls help us

Thanks in advance

Ajesh Babu

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to