[
https://issues.apache.org/jira/browse/EXEC-92?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14981395#comment-14981395
]
Aleksandr Dubinsky commented on EXEC-92:
----------------------------------------
The javadoc says 3 times that {{read}} returns at least one byte. It says only
once that it returns -1 for EOF. So, which part of the contract is an imbecile
more likely to ignore?
OTOH, {{write}} accepts length 0.
Let's trust our contracts and move on...
> StreamPumper - Check For EOF
> ----------------------------
>
> Key: EXEC-92
> URL: https://issues.apache.org/jira/browse/EXEC-92
> Project: Commons Exec
> Issue Type: Bug
> Affects Versions: 1.3
> Reporter: BELUGA BEHR
> Fix For: 1.4
>
> Attachments: StreamPumper.java.patch
>
>
> When the StreamPumper is copying data from the InputStream to the
> OutputStream, it would be safer to check for EOF instead of a read size
> greater than zero to protect against InputStream implementations that don't
> respect the contract as defined in Java core JavaDoc.
> Patch Included. I took code from the copy method of the IOUtils class.
> {code:title=StreamPumper.java|borderStyle=solid}
> while ((length = is.read(buf)) > 0)
> {
> os.write(buf, 0, length);
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)