From 5b4b8a3320a934aa08e84554f2d841c3658c3292 Mon Sep 17 00:00:00 2001 From: Arnaud Tournier Date: Fri, 11 Dec 2015 16:32:32 +0100 Subject: [PATCH] Call setAccessible only once In the getField method, due to recursion, the field.setAccessible was called a number of times equal to the number of level to go up the hierarchy to find the field --- src/main/java/ysoserial/payloads/util/Reflections.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ysoserial/payloads/util/Reflections.java b/src/main/java/ysoserial/payloads/util/Reflections.java index 0e6b599..d4dc7f4 100644 --- a/src/main/java/ysoserial/payloads/util/Reflections.java +++ b/src/main/java/ysoserial/payloads/util/Reflections.java @@ -7,10 +7,10 @@ public class Reflections { public static Field getField(final Class clazz, final String fieldName) throws Exception { Field field = clazz.getDeclaredField(fieldName); - if (field == null && clazz.getSuperclass() != null) { + if (field != null) + field.setAccessible(true); + else if (clazz.getSuperclass() != null) field = getField(clazz.getSuperclass(), fieldName); - } - field.setAccessible(true); return field; }