Certainly some verbiage like that could be added. Going back to last month in the discussion about improving the performance of readAllBytes() I calculated the exact number of bytes allocated [1]. For the initial implementation in that change this was B + L for L <= B N = B + 2*L for L > B where B is the internal buffer size and L is len. I would need to double check the accuracy of the above but I think your suggestion of “proportional” is sufficient.
Thanks, Brian [1] http://mail.openjdk.java.net/pipermail/core-libs-dev/2017-December/050686.html On Jan 22, 2018, at 7:56 AM, Adam Petcher <adam.petc...@oracle.com> wrote: > The spec of the new method doesn't give me enough information to determine > whether it is safe to call it when the value of the length argument is much > larger than the number of bytes I expect to actually read. This use case > comes up frequently in security libraries, because we have to handle length > values that were chosen by an attacker. Would it be possible to add a > sentence or two to the spec to clarify this situation? > > Possible wording, if this method can be called with large length values: > > "The total amount of memory allocated by this method is proportional to the > number of bytes read from the stream. Therefore, the method may be safely > called with very large values of {@code len}. > > Possible wording, otherwise: > > "The total amount of memory allocated by this method may be proportional to > the value of {@code len}. Therefore, calling this method with very large > values of {@code len} is not recommended."