You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Felix Meschberger (JIRA)" <ji...@apache.org> on 2010/07/30 13:42:19 UTC
[jira] Closed: (FELIX-1927) NPE in AbstractComponentManager if no
services are provided and a SecurityManager is installed
[ https://issues.apache.org/jira/browse/FELIX-1927?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Felix Meschberger closed FELIX-1927.
------------------------------------
Closing since version is released.
> NPE in AbstractComponentManager if no services are provided and a SecurityManager is installed
> ----------------------------------------------------------------------------------------------
>
> Key: FELIX-1927
> URL: https://issues.apache.org/jira/browse/FELIX-1927
> Project: Felix
> Issue Type: Bug
> Components: Declarative Services (SCR)
> Affects Versions: scr-1.2.0
> Reporter: Lukas Kolisko
> Assignee: Felix Meschberger
> Fix For: scr-1.4.0
>
>
> Lukas Kolisko reports in response to FELIX-1827:
> If a service component does not provide any service and system security manager is set , then
> AbstractComponentManager.java line 537
> final String[] services = getComponentMetadata().getServiceMetadata().getProvides(); fails with NPE because ServiceMetadata is null.
> Possible patch:
> Index: src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
> ===================================================================
> --- src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java (revision 888421)
> +++ src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java (working copy)
> @@ -33,6 +33,7 @@
> import org.apache.felix.scr.impl.ComponentActivatorTask;
> import org.apache.felix.scr.impl.metadata.ComponentMetadata;
> import org.apache.felix.scr.impl.metadata.ReferenceMetadata;
> +import org.apache.felix.scr.impl.metadata.ServiceMetadata;
> import org.osgi.framework.Bundle;
> import org.osgi.framework.InvalidSyntaxException;
> import org.osgi.framework.ServicePermission;
> @@ -534,18 +535,22 @@
> boolean allowed = true;
> if ( System.getSecurityManager() != null )
> {
> - final String[] services = getComponentMetadata().getServiceMetadata().getProvides();
> - if ( services != null && services.length > 0 )
> + final ServiceMetadata metadata = getComponentMetadata().getServiceMetadata();
> + if ( metadata != null )
> {
> - final Bundle bundle = getBundle();
> - for ( int i = 0; i < services.length; i++ )
> + final String[] services = metadata.getProvides();
> + if ( services != null && services.length > 0 )
> {
> - final Permission perm = new ServicePermission( services[i], ServicePermission.REGISTER );
> - if ( !bundle.hasPermission( perm ) )
> + final Bundle bundle = getBundle();
> + for ( int i = 0; i < services.length; i++ )
> {
> - log( LogService.LOG_INFO, "Permission to register service {0} is denied", new Object[]
> - { services[i] }, null );
> - allowed = false;
> + final Permission perm = new ServicePermission( services[i], ServicePermission.REGISTER );
> + if ( !bundle.hasPermission( perm ) )
> + {
> + log( LogService.LOG_INFO, "Permission to register service {0} is denied", new Object[]
> + { services[i] }, null );
> + allowed = false;
> + }
> }
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.