This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 7.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 0a06a40612c4ce3dc72f4cad5e66015e80e86511 Author: Mark Thomas <[email protected]> AuthorDate: Fri Oct 4 21:23:42 2019 +0100 Fix NPEs when looking for static methods --- java/javax/el/Util.java | 6 +++++- java/org/apache/el/util/ReflectionUtil.java | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/java/javax/el/Util.java b/java/javax/el/Util.java index 7c91a5d..12cad7d 100644 --- a/java/javax/el/Util.java +++ b/java/javax/el/Util.java @@ -543,7 +543,11 @@ class Util { */ static Method getMethod(Class<?> type, Object base, Method m) { JreCompat jreCompat = JreCompat.getInstance(); - if (m == null || (Modifier.isPublic(type.getModifiers()) && jreCompat.canAcccess(base, m))) { + // If base is null, method MUST be static + // If base is non-null, method may be static or non-static + if (m == null || + (Modifier.isPublic(type.getModifiers()) && + (jreCompat.canAcccess(base, m) || base != null && jreCompat.canAcccess(null, m)))) { return m; } Class<?>[] inf = type.getInterfaces(); diff --git a/java/org/apache/el/util/ReflectionUtil.java b/java/org/apache/el/util/ReflectionUtil.java index 5b88de3..17cbd76 100644 --- a/java/org/apache/el/util/ReflectionUtil.java +++ b/java/org/apache/el/util/ReflectionUtil.java @@ -395,7 +395,11 @@ public class ReflectionUtil { */ private static Method getMethod(Class<?> type, Object base, Method m) { JreCompat jreCompat = JreCompat.getInstance(); - if (m == null || (Modifier.isPublic(type.getModifiers()) && jreCompat.canAcccess(base, m))) { + // If base is null, method MUST be static + // If base is non-null, method may be static or non-static + if (m == null || + (Modifier.isPublic(type.getModifiers()) && + (jreCompat.canAcccess(base, m) || base != null && jreCompat.canAcccess(null, m)))) { return m; } Class<?>[] inf = type.getInterfaces(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
