< prev index next >
test/lib/jdk/test/lib/Platform.java
Print this page
rev 51613 : 8210039: move OSInfo to top level testlibrary
Reviewed-by: duke
rev 51614 : imported patch 8210039-1
*** 29,52 ****
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class Platform {
! public static final String vmName = System.getProperty("java.vm.name");
! public static final String vmInfo = System.getProperty("java.vm.info");
! private static final String osVersion = System.getProperty("os.version");
private static int osVersionMajor = -1;
private static int osVersionMinor = -1;
! private static final String osName = System.getProperty("os.name");
! private static final String dataModel = System.getProperty("sun.arch.data.model");
! private static final String vmVersion = System.getProperty("java.vm.version");
! private static final String jdkDebug = System.getProperty("jdk.debug");
! private static final String osArch = System.getProperty("os.arch");
! private static final String userName = System.getProperty("user.name");
! private static final String compiler = System.getProperty("sun.management.compiler");
public static boolean isClient() {
return vmName.endsWith(" Client VM");
}
--- 29,56 ----
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
+ import java.security.AccessController;
+ import java.security.PrivilegedAction;
+ import java.security.PrivilegedActionException;
+ import java.security.PrivilegedExceptionAction;
public class Platform {
! public static final String vmName = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("java.vm.name"));
! public static final String vmInfo = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("java.vm.info"));
! private static final String osVersion = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("os.version"));
private static int osVersionMajor = -1;
private static int osVersionMinor = -1;
! private static final String osName = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("os.name"));
! private static final String dataModel = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("sun.arch.data.model"));
! private static final String vmVersion = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("java.vm.version"));
! private static final String jdkDebug = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("jdk.debug"));
! private static final String osArch = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("os.arch"));
! private static final String userName = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("user.name"));
! private static final String compiler = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getProperty("sun.management.compiler"));
public static boolean isClient() {
return vmName.endsWith(" Client VM");
}
*** 252,284 ****
*/
private static boolean canPtraceAttachLinux() throws IOException {
// SELinux deny_ptrace:
File deny_ptrace = new File("/sys/fs/selinux/booleans/deny_ptrace");
if (deny_ptrace.exists()) {
! try (RandomAccessFile file = new RandomAccessFile(deny_ptrace, "r")) {
if (file.readByte() != '0') {
return false;
}
}
}
// YAMA enhanced security ptrace_scope:
// 0 - a process can PTRACE_ATTACH to any other process running under the same uid
// 1 - restricted ptrace: a process must be a children of the inferior or user is root
// 2 - only processes with CAP_SYS_PTRACE may use ptrace or user is root
// 3 - no attach: no processes may use ptrace with PTRACE_ATTACH
File ptrace_scope = new File("/proc/sys/kernel/yama/ptrace_scope");
if (ptrace_scope.exists()) {
! try (RandomAccessFile file = new RandomAccessFile(ptrace_scope, "r")) {
byte yama_scope = file.readByte();
if (yama_scope == '3') {
return false;
}
if (!userName.equals("root") && yama_scope != '0') {
return false;
}
}
}
// Otherwise expect to be permitted:
return true;
}
--- 256,298 ----
*/
private static boolean canPtraceAttachLinux() throws IOException {
// SELinux deny_ptrace:
File deny_ptrace = new File("/sys/fs/selinux/booleans/deny_ptrace");
if (deny_ptrace.exists()) {
! try (RandomAccessFile file = AccessController.doPrivileged(
! (PrivilegedExceptionAction<RandomAccessFile>) () -> new RandomAccessFile(deny_ptrace, "r"))) {
if (file.readByte() != '0') {
return false;
}
+ } catch (PrivilegedActionException e) {
+ @SuppressWarnings("unchecked")
+ IOException t = (IOException) e.getException();
+ throw t;
}
}
// YAMA enhanced security ptrace_scope:
// 0 - a process can PTRACE_ATTACH to any other process running under the same uid
// 1 - restricted ptrace: a process must be a children of the inferior or user is root
// 2 - only processes with CAP_SYS_PTRACE may use ptrace or user is root
// 3 - no attach: no processes may use ptrace with PTRACE_ATTACH
File ptrace_scope = new File("/proc/sys/kernel/yama/ptrace_scope");
if (ptrace_scope.exists()) {
! try (RandomAccessFile file = AccessController.doPrivileged(
! (PrivilegedExceptionAction<RandomAccessFile>) () -> new RandomAccessFile(ptrace_scope, "r"))) {
byte yama_scope = file.readByte();
if (yama_scope == '3') {
return false;
}
if (!userName.equals("root") && yama_scope != '0') {
return false;
}
+ } catch (PrivilegedActionException e) {
+ @SuppressWarnings("unchecked")
+ IOException t = (IOException) e.getException();
+ throw t;
}
}
// Otherwise expect to be permitted:
return true;
}
< prev index next >