From c24d1b77cf2e5aa064782d87aba2d6978c70c322 Mon Sep 17 00:00:00 2001 From: Leon Rosenberg Date: Wed, 24 Jan 2024 13:57:44 +0100 Subject: [PATCH] handling for jvmversion 21, setting security manager now in ServerSideUtils --- .../core/util/ServerSideUtils.java | 25 +++++++++++++++++++ .../core/util/ServerSideUtilsTest.java | 15 +++++++++++ 2 files changed, 40 insertions(+) create mode 100644 distributeme-core/src/test/java/org/distributeme/core/util/ServerSideUtilsTest.java diff --git a/distributeme-core/src/main/java/org/distributeme/core/util/ServerSideUtils.java b/distributeme-core/src/main/java/org/distributeme/core/util/ServerSideUtils.java index 2a9a900..cb793bb 100644 --- a/distributeme-core/src/main/java/org/distributeme/core/util/ServerSideUtils.java +++ b/distributeme-core/src/main/java/org/distributeme/core/util/ServerSideUtils.java @@ -3,6 +3,7 @@ import org.distributeme.core.AbstractCallContext; import org.distributeme.core.routing.Constants; +import java.security.Permission; import java.util.Map; /** @@ -59,4 +60,28 @@ private static final boolean _isBlacklisted(Map transportableCallContext){ Boolean blacklistedFlag = (Boolean)transportableCallContext.get(Constants.ATT_BLACKLISTED); return blacklistedFlag != null && blacklistedFlag; } + + public static void setSecurityManagerIfRequired(){ + if (shouldSecurityManagerBeSet()){ + if (System.getSecurityManager()==null) + // We allow all operations. + System.setSecurityManager(new SecurityManager(){ + public void checkPermission(Permission perm) { } + }); + } + } + + /* TEST VISIBILITY */ static boolean shouldSecurityManagerBeSet(String jvmVersionString){ + if (jvmVersionString == null) + return false; + if (jvmVersionString.contains(".")){ + return Integer.parseInt(jvmVersionString.substring(0, jvmVersionString.indexOf('.')))<17; + } + return false; + + } + + private static final boolean shouldSecurityManagerBeSet(){ + return shouldSecurityManagerBeSet(System.getProperty("java.version")); + } } diff --git a/distributeme-core/src/test/java/org/distributeme/core/util/ServerSideUtilsTest.java b/distributeme-core/src/test/java/org/distributeme/core/util/ServerSideUtilsTest.java new file mode 100644 index 0000000..4928539 --- /dev/null +++ b/distributeme-core/src/test/java/org/distributeme/core/util/ServerSideUtilsTest.java @@ -0,0 +1,15 @@ +package org.distributeme.core.util; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class ServerSideUtilsTest { + @Test + public void testShouldSecurityManagerBeSet() { + assertEquals(true, ServerSideUtils.shouldSecurityManagerBeSet("1.8.0_311")); + assertEquals(false, ServerSideUtils.shouldSecurityManagerBeSet("21")); + assertEquals(false, ServerSideUtils.shouldSecurityManagerBeSet("21.0.1")); + assertEquals(false, ServerSideUtils.shouldSecurityManagerBeSet("21.0.1-LTE-ea")); + } +}