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