[ 
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)

Reply via email to