[jdk17] RFR: 8269697: JNI_GetPrimitiveArrayCritical() should not accept object array

David Holmes david.holmes at oracle.com
Thu Jul 1 04:41:44 UTC 2021


Hi Zhengyu,

On 1/07/2021 11:24 am, David Holmes wrote:
> On 1/07/2021 6:17 am, Zhengyu Gu wrote:
>> GetPrimitiveArrayCritical() is supposed to only be used with primitive 
>> array types, but nothing prevents current implementation from 
>> accepting object arrays (please see attached test case in bug).
> 
> JNI does not in general perform parameter validation. This is a 
> deliberate design choice with JNI. Use of -Xcheck:jni should detect and 
> repport incorrect usage.

Sorry I misunderstood the nature of the proposed fix.

>> My purposed fix is not very friendly, it crashes JVM if a none 
>> primitive array is passed in, but I am sure what to expect in this 
>> scenario.
>>
>> Specification people, please comment. Thanks!

Crashing if passed the wrong type of array is perfectly fine per JNI 
specification "Reporting Errors" section [1].

[1]. 
https://docs.oracle.com/en/java/javase/16/docs/specs/jni/design.html#reporting-programming-errors

I'll see if I can dig up why the code does what it does.

Thanks,
David
-----

>>
>> -------------
>>
>> Commit messages:
>>   - v0
>>
>> Changes: https://git.openjdk.java.net/jdk17/pull/185/files
>>   Webrev: https://webrevs.openjdk.java.net/?repo=jdk17&pr=185&range=00
>>    Issue: https://bugs.openjdk.java.net/browse/JDK-8269697
>>    Stats: 7 lines in 1 file changed: 0 ins; 5 del; 2 mod
>>    Patch: https://git.openjdk.java.net/jdk17/pull/185.diff
>>    Fetch: git fetch https://git.openjdk.java.net/jdk17 
>> pull/185/head:pull/185
>>
>> PR: https://git.openjdk.java.net/jdk17/pull/185
>>


More information about the hotspot-dev mailing list