Hi Brian,

the body of readFully() seems to silently assume that the other arguments are correct (e.g., off >= 0 and so on).

In the (still) current implementation of DataInputStream.readFully(byte[], int, int), when off < 0 and len > 0, in the loop it then invokes the underlying in.read(byte[], int, int) with a negative offset off + n during the initial iterations.

In the specific case of the tests on underlying FileInputStreams, it thus seems that read(byte[], int, int) does not, in turn, validate its arguments. I didn't investigate further, although I will in the next days if deemed necessary.


Greetings
Raffaello


On 2020-08-06 22:09, Brian Burkhalter wrote:

On Aug 6, 2020, at 12:36 PM, Raffaello Giulietti <raffaello.giulie...@gmail.com <mailto:raffaello.giulie...@gmail.com>> wrote:

This looks all right. I would be inclined to do like in [1] and throw the RuntimeException on the line after each readFully() and drop the return statements], but I’m not going to insist on it.
Thanks,
Brian
[1]http://hg.openjdk.java.net/jdk/jdk/file/db6952bf8c39/test/jdk/java/nio/file/etc/MacVolumesTest.java#l58

Sorry, I didn't completely get that.
Here we are!

This looks good. I observed however that the test passes without the change to DataInputStream.

Brian

Reply via email to