From fc577c0bcd0136f5de6f8f17ea5450bcf180ba6d Mon Sep 17 00:00:00 2001 From: Alexandre Bartel Date: Mon, 14 Dec 2020 11:23:59 +0100 Subject: [PATCH] Just call setAccessible with Java > 12 --- .../java/ysoserial/payloads/util/Reflections.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/ysoserial/payloads/util/Reflections.java b/src/main/java/ysoserial/payloads/util/Reflections.java index a622d49..5d9f88f 100644 --- a/src/main/java/ysoserial/payloads/util/Reflections.java +++ b/src/main/java/ysoserial/payloads/util/Reflections.java @@ -13,8 +13,18 @@ import com.nqzero.permit.Permit; public class Reflections { public static void setAccessible(AccessibleObject member) { - // quiet runtime warnings from JDK9+ - Permit.setAccessible(member); + String versionStr = System.getProperty("java.version"); + int javaVersion = Integer.parseInt(versionStr.split("\\.")[0]); + if (javaVersion < 12) { + // quiet runtime warnings from JDK9+ + Permit.setAccessible(member); + } else { + // not possible to quiet runtime warnings anymore... + // see https://bugs.openjdk.java.net/browse/JDK-8210522 + // to understand impact on Permit (i.e. it does not work + // anymore with Java >= 12) + member.setAccessible(true); + } } public static Field getField(final Class clazz, final String fieldName) {