< 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 >