[
https://issues.apache.org/jira/browse/FELIX-3221?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Karl Pauls resolved FELIX-3221.
-------------------------------
Resolution: Fixed
Fix Version/s: framework.security-2.2.0
Rats. This should be using adapt(BundleRevisionImpl.class) as this internal
class doesn't return null if the bundle has been uninstalled. I commited a fix
for this. Can you please test and close this issue if it works for you? Thanks
a lot!
> NPE when uninstall a bundle on enabled OSGi security
> ----------------------------------------------------
>
> Key: FELIX-3221
> URL: https://issues.apache.org/jira/browse/FELIX-3221
> Project: Felix
> Issue Type: Bug
> Components: Framework Security
> Affects Versions: framework.security-2.0.0
> Reporter: Michael Hirsch
> Assignee: Karl Pauls
> Fix For: framework.security-2.2.0
>
>
> org.apache.felix.framework.BundleImpl#adapt returns null:
> {code}
> public synchronized <A> A adapt(Class<A> type)
> {
> ....
> else if (type == BundleRevision.class)
> {
> if (m_state == Bundle.UNINSTALLED)
> {
> return null;
> }
> .....
> {code}
> This causes a NPE:
> StackTrace:
> java.lang.NullPointerException
> at
> org.apache.felix.framework.SecurityProviderImpl.getSignerMatcher(SecurityProviderImpl.java:73)
> at org.apache.felix.framework.Felix.getSignerMatcher(Felix.java:4130)
> at
> org.apache.felix.framework.BundleImpl.getSignerCertificates(BundleImpl.java:901)
> at
> org.osgi.framework.SignerProperty.isBundleSigned(SignerProperty.java:110)
> at org.osgi.framework.AdminPermission$1.run(AdminPermission.java:884)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.osgi.framework.AdminPermission.getProperties(AdminPermission.java:875)
> at
> org.osgi.framework.AdminPermission.implies0(AdminPermission.java:671)
> at
> org.osgi.framework.AdminPermissionCollection.implies(AdminPermission.java:1014)
> at
> org.apache.felix.framework.security.util.Permissions.implies(Permissions.java:469)
> at
> org.apache.felix.framework.security.condpermadmin.ConditionalPermissionAdminImpl.eval(ConditionalPermissionAdminImpl.java:949)
> at
> org.apache.felix.framework.security.condpermadmin.ConditionalPermissionAdminImpl.hasPermission(ConditionalPermissionAdminImpl.java:882)
> at
> org.apache.felix.framework.SecurityProviderImpl.hasBundlePermission(SecurityProviderImpl.java:122)
> at
> org.apache.felix.framework.Felix.impliesBundlePermission(Felix.java:4139)
> at
> org.apache.felix.framework.BundleProtectionDomain.implies(BundleProtectionDomain.java:66)
> at java.security.AccessControlContext.checkPermission(Unknown Source)
> at java.security.AccessController.checkPermission(Unknown Source)
> at java.lang.SecurityManager.checkPermission(Unknown Source)
> at
> org.apache.felix.framework.BundleImpl.getLocation(BundleImpl.java:583)
> at
> org.apache.felix.cm.impl.ConfigurationManager.bundleChanged(ConfigurationManager.java:607)
> at
> org.apache.felix.framework.util.EventDispatcher$3.run(EventDispatcher.java:861)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:858)
> at
> org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:789)
> at
> org.apache.felix.framework.util.EventDispatcher.run(EventDispatcher.java:1088)
> at
> org.apache.felix.framework.util.EventDispatcher.access$000(EventDispatcher.java:54)
> at
> org.apache.felix.framework.util.EventDispatcher$1.run(EventDispatcher.java:101)
> at java.lang.Thread.run(Unknown Source)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira