mirror of
https://github.com/corda/corda.git
synced 2025-01-06 05:04:20 +00:00
added RuntimePermission and System.getenv()
This commit is contained in:
parent
382f016415
commit
2f225795fc
@ -631,6 +631,35 @@ Java_java_lang_System_getProperty(JNIEnv* e, jclass, jstring name,
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// System.getEnvironment() implementation
|
||||||
|
// TODO: For Win32, replace usage of deprecated _wenviron
|
||||||
|
#ifndef PLATFORM_WINDOWS
|
||||||
|
extern char** environ;
|
||||||
|
# else
|
||||||
|
extern wchar_t** _wenviron;
|
||||||
|
const wchar_t** environ = _wenviron;
|
||||||
|
#endif
|
||||||
|
extern "C" JNIEXPORT jobjectArray JNICALL
|
||||||
|
Java_java_lang_System_getEnvironment(JNIEnv* env, jclass) {
|
||||||
|
int length;
|
||||||
|
for (length = 0; environ[length] != 0; ++length);
|
||||||
|
|
||||||
|
jobjectArray stringArray =
|
||||||
|
env->NewObjectArray(length, env->FindClass("java/lang/String"),
|
||||||
|
env->NewStringUTF(""));
|
||||||
|
|
||||||
|
for (int i = 0; i < length; i++) {
|
||||||
|
#ifndef PLATFORM_WINDOWS
|
||||||
|
jobject varString = env->NewStringUTF(environ[i]); // UTF-8
|
||||||
|
#else
|
||||||
|
jobject varString = env->NewString(environ[i]); // UTF-16
|
||||||
|
#endif
|
||||||
|
env->SetObjectArrayElement(stringArray, i, varString);
|
||||||
|
}
|
||||||
|
|
||||||
|
return stringArray;
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" JNIEXPORT jlong JNICALL
|
extern "C" JNIEXPORT jlong JNICALL
|
||||||
Java_java_lang_System_currentTimeMillis(JNIEnv*, jclass)
|
Java_java_lang_System_currentTimeMillis(JNIEnv*, jclass)
|
||||||
{
|
{
|
||||||
|
21
classpath/java/lang/RuntimePermission.java
Normal file
21
classpath/java/lang/RuntimePermission.java
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/* Copyright (c) 2012, Avian Contributors
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software
|
||||||
|
for any purpose with or without fee is hereby granted, provided
|
||||||
|
that the above copyright notice and this permission notice appear
|
||||||
|
in all copies.
|
||||||
|
|
||||||
|
There is NO WARRANTY for this software. See license.txt for
|
||||||
|
details. */
|
||||||
|
|
||||||
|
package java.lang;
|
||||||
|
|
||||||
|
import java.security.BasicPermission;
|
||||||
|
|
||||||
|
public class RuntimePermission extends BasicPermission {
|
||||||
|
|
||||||
|
public RuntimePermission(String name) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,12 +17,15 @@ import java.io.BufferedOutputStream;
|
|||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.FileDescriptor;
|
import java.io.FileDescriptor;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Hashtable;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
public abstract class System {
|
public abstract class System {
|
||||||
private static final long NanoTimeBaseInMillis = currentTimeMillis();
|
private static final long NanoTimeBaseInMillis = currentTimeMillis();
|
||||||
|
|
||||||
private static Property properties;
|
private static Property properties;
|
||||||
|
private static Map<String, String> environment;
|
||||||
|
|
||||||
private static SecurityManager securityManager;
|
private static SecurityManager securityManager;
|
||||||
// static {
|
// static {
|
||||||
@ -145,4 +148,37 @@ public abstract class System {
|
|||||||
this.next = next;
|
this.next = next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getenv(String name) throws NullPointerException,
|
||||||
|
SecurityException {
|
||||||
|
if (getSecurityManager() != null) { // is this allowed?
|
||||||
|
getSecurityManager().
|
||||||
|
checkPermission(new RuntimePermission("getenv." + name));
|
||||||
|
}
|
||||||
|
return getenv().get(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Map<String, String> getenv() throws SecurityException {
|
||||||
|
if (getSecurityManager() != null) { // is this allowed?
|
||||||
|
getSecurityManager().checkPermission(new RuntimePermission("getenv.*"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (environment == null) { // build environment table
|
||||||
|
String[] vars = getEnvironment();
|
||||||
|
environment = new Hashtable<String, String>(vars.length);
|
||||||
|
for (String var : vars) { // parse name-value pairs
|
||||||
|
int equalsIndex = var.indexOf('=');
|
||||||
|
// null names and values are forbidden
|
||||||
|
if (equalsIndex != -1 && equalsIndex < var.length() - 1) {
|
||||||
|
environment.put(var.substring(0, equalsIndex),
|
||||||
|
var.substring(equalsIndex + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return environment;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Returns the native process environment. */
|
||||||
|
private static native String[] getEnvironment();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user