Andrew, The fix looks good to me.

Sergey, are you asking for that text to be added ? Looks to me like its already there,
so probably I am not following what you mean.
No, readFully() has this code:
            int nbytes = read(b, off, len);
            if (nbytes == -1) {
                throw new EOFException();
            }
I assume this method should throw an exception if nbytes!=len as described in the specification. same as readShort/readInt.


-phil.

On 03/20/2015 10:32 AM, Sergey Bylokhov wrote:
Hi, Andrew?
Hi, Andrew.
Should we update a readFully() also?
* @exception java.io.EOFException if the stream reaches the end before
     * reading all the bytes.
     * @exception IOException if an I/O error occurs.
     */
    void readFully(byte[] b, int off, int len) throws IOException;

20.03.15 14:30, Andrew Brygin wrote:
Hello,

 could you please review a fix for CR 8074954?

Bug: https://bugs.openjdk.java.net/browse/JDK-8074954
Webrev: http://cr.openjdk.java.net/~bae/8074954/9/webrev.00/

 The problem happens if an input stream does not contain enough data
 to read a multi-byte type (as 4-bytes integer or 2-bytes short)
 completely. In this case the actual number of obtained bytes is
 returned, and if we get at least one byte, the EOF exception in
 not triggered.
 As a result, an incorrect value is returned.

 Suggested fix is to check explicitly whether required number of bytes
 has been read.

 Supplied regression test demonstrates the problem.

 Please take a look.

Thanks,
Andrew.


--
Best regards, Sergey.



--
Best regards, Sergey.

Reply via email to