Goldstein Lyor created SSHD-424:
-----------------------------------
Summary: Avoid inadvertent closure of the input stream used by
ScpHelper#receiveFile
Key: SSHD-424
URL: https://issues.apache.org/jira/browse/SSHD-424
Project: MINA SSHD
Issue Type: Bug
Affects Versions: 1.0.0, 0.14.0
Reporter: Goldstein Lyor
Priority: Minor
The current code wraps the session _InputStream_ inside a _FilterInputStream_
in order to limit the available data for read to the specified length. However,
the _FilterInputStream_ instance _close_ method is not overridden - i.e., if
the wrapper stream is closed, this will also close the session stream, which
would make it impossible to read the ACK (or other SCP commands). Granted, that
the current wrapper stream is not inside a _try-with-resource_ block, so
*theoretically* it's _close_ method should not be called. However, there are
good reasons to (a) override the _close_ method and *explicitly* avoid closing
the wrapped stream and (b) place the wrapped stream inside a
_try-with-resource_ block:
* Good programming practices - if a data stream goes out of scope, make sure it
is closed.
* Avoid a possible race condition between the garbage collector and our code.
When the garbage collector decides that the wrapper stream is no longer
required, it may also decide to close it. However, it may occur while we are
trying to read the ACK or be in the midst of processing another SCP command. In
such a scenario we would get an _IOException_ on an *unrelated* command.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)