Fix NPEs when looking for static methods
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 @@
*/
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 @@
*/
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();