You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2018/08/24 21:52:27 UTC
svn commit: r1838972 - in
/felix/trunk/framework/src/main/java/org/apache/felix/framework:
BundleImpl.java util/SecurityManagerEx.java
Author: pauls
Date: Fri Aug 24 21:52:27 2018
New Revision: 1838972
URL: http://svn.apache.org/viewvc?rev=1838972&view=rev
Log:
FELIX-5914: Workaround SecurityManager.getClassContext returning null on Android
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/util/SecurityManagerEx.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java?rev=1838972&r1=1838971&r2=1838972&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/BundleImpl.java Fri Aug 24 21:52:27 2018
@@ -1080,9 +1080,9 @@ class BundleImpl implements Bundle, Bund
Object sm = System.getSecurityManager();
if ((sm != null) && (getFramework().getSecurityProvider() != null))
{
- Class caller = m_smEx.getClassContext()[3];
- if (((Felix.m_secureAction.getClassLoader(caller) != m_classloader) ||
- !caller.getName().startsWith("org.apache.felix.framework.")))
+ Class[] classes = m_smEx.getClassContext();
+ if (classes.length < 3 || ((Felix.m_secureAction.getClassLoader(classes[3]) != m_classloader) ||
+ !classes[3].getName().startsWith("org.apache.felix.framework.")))
{
((SecurityManager) sm).checkPermission(
new AdaptPermission(type.getName(), this, AdaptPermission.ADAPT));
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/util/SecurityManagerEx.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/util/SecurityManagerEx.java?rev=1838972&r1=1838971&r2=1838972&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/util/SecurityManagerEx.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/util/SecurityManagerEx.java Fri Aug 24 21:52:27 2018
@@ -26,8 +26,12 @@ package org.apache.felix.framework.util;
**/
public class SecurityManagerEx extends SecurityManager
{
+ // In Android apparently getClassContext returns null - we work around this by returning an empty array in that case.
+ private static final Class[] EMPTY_CLASSES = new Class[0];
+
public Class[] getClassContext()
{
- return super.getClassContext();
+ Class[] result = super.getClassContext();
+ return result != null ? result : EMPTY_CLASSES;
}
}
\ No newline at end of file