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.