[
https://issues.apache.org/jira/browse/SSHD-444?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Guillaume Nodet resolved SSHD-444.
----------------------------------
Resolution: Fixed
Fix Version/s: 1.0.0
Assignee: Guillaume Nodet
https://git-wip-us.apache.org/repos/asf?p=mina-sshd.git;a=commitdiff;h=cccec812bf9a0571da7bffee651e9c741c402e39
> Handle correctly inaccessible paths in Scp and Sftp subsystems
> --------------------------------------------------------------
>
> Key: SSHD-444
> URL: https://issues.apache.org/jira/browse/SSHD-444
> Project: MINA SSHD
> Issue Type: Bug
> Affects Versions: 1.0.0
> Reporter: Goldstein Lyor
> Assignee: Guillaume Nodet
> Fix For: 1.0.0
>
> Attachments:
> 0043-SSHD-444-Handle-correctly-inaccessible-paths-in-Scp-.patch, Capture.PNG
>
>
> Turns out that just asking _Files.exists(...)_ is not enough - according to
> the [Java tutorial on checking if a file or directory
> exists|http://docs.oracle.com/javase/tutorial/essential/io/check.html]:
> {panel}
> The methods in the _Path_ class are syntactic, meaning that they operate on
> the _Path_ instance. But eventually you must access the file system to verify
> that a particular _Path_ exists, or does not exist. You can do so with the
> _exists(Path, LinkOption...)_ and the _notExists(Path, LinkOption...)_
> methods. *Note* that _!Files.exists(path)_ is *not( equivalent to
> _Files.notExists(path)_. When you are testing a file's existence, three
> results are possible:
> - The file is verified to exist.
> - The file is verified to not exist.
> - The file's status is unknown. This result can occur when the program does
> not have access to the file.
> If *both* _exists_ and *notExists* return false, the existence of the file
> cannot be verified.
> {panel}
> I have therefore implemented _IOUtils#checkFileExistence_ method that serves
> as a *central* method for such checks, and then added the relevant logic in
> SCP/SFTP. *Note*: specifically for SFTP, whenever the existence cannot be
> determined (i.e., _null_ is returned) the _unsupportedAttributePolicy_ is
> consulted. The default behavior is geared towards being *lenient* - i.e.,
> provide as much information as possible even for inaccessible files (e.g.,
> their name and permissions) knowing that if the client tries to
> read/write/delete them it will be blocked anyway.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)