...
| Code Block | ||
|---|---|---|
| ||
public final class NativeMethodWrapper {
// private native method
private native void nativeOperation(byte[] data, int offset, int len);
// wrapper method performs SecurityManager and input validation checks
public void doOperation(byte[] data, int offset, int len) {
// permission needed to invoke native method
securityManagerCheck();
if (data == null) {
throw new NullPointerException();
}
// copy mutable input
data = data.clone();
// validate input
if ((offset < 0) || (len < 0) || (offset > (data.length - len))) {
throw new IllegalArgumentException();
}
nativeOperation(data, offset, len);
}
static {
// load native library in static initializer of class
System.loadLibrary("NativeMethodLib");
}
}
|
Exceptions
SEC08JN100-EX0: Native methods that do not require security manager checks, validation of arguments or return values, or defensive copying of mutable inputs (for example, the standard C function int rand(void)) do not need to be wrapped.
...