1840
1841 public void checkExecCommand(ActivationGroupDesc desc, String[] cmd)
1842 throws SecurityException
1843 {
1844 PermissionCollection perms = getExecPermissions();
1845
1846 /*
1847 * Check properties overrides.
1848 */
1849 Properties props = desc.getPropertyOverrides();
1850 if (props != null) {
1851 Enumeration<?> p = props.propertyNames();
1852 while (p.hasMoreElements()) {
1853 String name = (String) p.nextElement();
1854 String value = props.getProperty(name);
1855 String option = "-D" + name + "=" + value;
1856 try {
1857 checkPermission(perms,
1858 new ExecOptionPermission(option));
1859 } catch (AccessControlException e) {
1860 if (value.equals("")) {
1861 checkPermission(perms,
1862 new ExecOptionPermission("-D" + name));
1863 } else {
1864 throw e;
1865 }
1866 }
1867 }
1868 }
1869
1870 /*
1871 * Check group class name (allow nothing but the default),
1872 * code location (must be null), and data (must be null).
1873 */
1874 String groupClassName = desc.getClassName();
1875 if ((groupClassName != null &&
1876 !groupClassName.equals(
1877 ActivationGroupImpl.class.getName())) ||
1878 (desc.getLocation() != null) ||
1879 (desc.getData() != null))
1880 {
2084
2085 debugExec = AccessController.doPrivileged(
2086 (PrivilegedAction<Boolean>) () -> Boolean.getBoolean("sun.rmi.server.activation.debugExec"));
2087
2088 /**
2089 * Determine class name for activation exec policy (if any).
2090 */
2091 String execPolicyClassName = AccessController.doPrivileged(
2092 (PrivilegedAction<String>) () -> System.getProperty("sun.rmi.activation.execPolicy"));
2093 if (execPolicyClassName == null) {
2094 if (!stop) {
2095 DefaultExecPolicy.checkConfiguration();
2096 }
2097 execPolicyClassName = "default";
2098 }
2099
2100 /**
2101 * Initialize method for activation exec policy.
2102 */
2103 if (!execPolicyClassName.equals("none")) {
2104 if (execPolicyClassName.equals("") ||
2105 execPolicyClassName.equals("default"))
2106 {
2107 execPolicyClassName = DefaultExecPolicy.class.getName();
2108 }
2109
2110 try {
2111 Class<?> execPolicyClass = getRMIClass(execPolicyClassName);
2112 @SuppressWarnings("deprecation")
2113 Object tmp = execPolicyClass.newInstance();
2114 execPolicy = tmp;
2115 execPolicyMethod =
2116 execPolicyClass.getMethod("checkExecCommand",
2117 ActivationGroupDesc.class,
2118 String[].class);
2119 } catch (Exception e) {
2120 if (debugExec) {
2121 System.err.println(
2122 getTextResource("rmid.exec.policy.exception"));
2123 e.printStackTrace();
2124 }
|
1840
1841 public void checkExecCommand(ActivationGroupDesc desc, String[] cmd)
1842 throws SecurityException
1843 {
1844 PermissionCollection perms = getExecPermissions();
1845
1846 /*
1847 * Check properties overrides.
1848 */
1849 Properties props = desc.getPropertyOverrides();
1850 if (props != null) {
1851 Enumeration<?> p = props.propertyNames();
1852 while (p.hasMoreElements()) {
1853 String name = (String) p.nextElement();
1854 String value = props.getProperty(name);
1855 String option = "-D" + name + "=" + value;
1856 try {
1857 checkPermission(perms,
1858 new ExecOptionPermission(option));
1859 } catch (AccessControlException e) {
1860 if (value.isEmpty()) {
1861 checkPermission(perms,
1862 new ExecOptionPermission("-D" + name));
1863 } else {
1864 throw e;
1865 }
1866 }
1867 }
1868 }
1869
1870 /*
1871 * Check group class name (allow nothing but the default),
1872 * code location (must be null), and data (must be null).
1873 */
1874 String groupClassName = desc.getClassName();
1875 if ((groupClassName != null &&
1876 !groupClassName.equals(
1877 ActivationGroupImpl.class.getName())) ||
1878 (desc.getLocation() != null) ||
1879 (desc.getData() != null))
1880 {
2084
2085 debugExec = AccessController.doPrivileged(
2086 (PrivilegedAction<Boolean>) () -> Boolean.getBoolean("sun.rmi.server.activation.debugExec"));
2087
2088 /**
2089 * Determine class name for activation exec policy (if any).
2090 */
2091 String execPolicyClassName = AccessController.doPrivileged(
2092 (PrivilegedAction<String>) () -> System.getProperty("sun.rmi.activation.execPolicy"));
2093 if (execPolicyClassName == null) {
2094 if (!stop) {
2095 DefaultExecPolicy.checkConfiguration();
2096 }
2097 execPolicyClassName = "default";
2098 }
2099
2100 /**
2101 * Initialize method for activation exec policy.
2102 */
2103 if (!execPolicyClassName.equals("none")) {
2104 if (execPolicyClassName.isEmpty() ||
2105 execPolicyClassName.equals("default"))
2106 {
2107 execPolicyClassName = DefaultExecPolicy.class.getName();
2108 }
2109
2110 try {
2111 Class<?> execPolicyClass = getRMIClass(execPolicyClassName);
2112 @SuppressWarnings("deprecation")
2113 Object tmp = execPolicyClass.newInstance();
2114 execPolicy = tmp;
2115 execPolicyMethod =
2116 execPolicyClass.getMethod("checkExecCommand",
2117 ActivationGroupDesc.class,
2118 String[].class);
2119 } catch (Exception e) {
2120 if (debugExec) {
2121 System.err.println(
2122 getTextResource("rmid.exec.policy.exception"));
2123 e.printStackTrace();
2124 }
|