This PR implements [JEP 472](https://openjdk.org/jeps/472), by restricting the 
use of JNI in the following ways:

* `System::load` and `System::loadLibrary` are now restricted methods
* `Runtime::load` and `Runtime::loadLibrary` are now restricted methods
* binding a JNI `native` method declaration to a native implementation is now 
considered a restricted operation

This PR slightly changes the way in which the JDK deals with restricted 
methods, even for FFM API calls. In Java 22, the single 
`--enable-native-access` was used both to specify a set of modules for which 
native access should be allowed *and* to specify whether illegal native access 
(that is, native access occurring from a module not specified by 
`--enable-native-access`) should be treated as an error or a warning. More 
specifically, an error is only issued if the `--enable-native-access flag` is 
used at least once.

Here, a new flag is introduced, namely `illegal-native-access=allow/warn/deny`, 
which is used to specify what should happen when access to a restricted method 
and/or functionality is found outside the set of modules specified with 
`--enable-native-access`. The default policy is `warn`, but users can select 
`allow` to suppress the warnings, or `deny` to cause `IllegalCallerException` 
to be thrown. This aligns the treatment of restricted methods with other 
mechanisms, such as `--illegal-access` and the more recent 
`--sun-misc-unsafe-memory-access`.

Some changes were required in the package-info javadoc for `java.lang.foreign`, 
to reflect the changes in the command line flags described above.

-------------

Commit messages:
 - Initial push

Changes: https://git.openjdk.org/jdk/pull/19213/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19213&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8331671
  Stats: 466 lines in 99 files changed: 301 ins; 53 del; 112 mod
  Patch: https://git.openjdk.org/jdk/pull/19213.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19213/head:pull/19213

PR: https://git.openjdk.org/jdk/pull/19213

Reply via email to