This is an automated email from the ASF dual-hosted git repository.

pauls pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/felix-dev.git


The following commit(s) were added to refs/heads/master by this push:
     new a0a79e91d9 FELIX-6522 Empty name is not allowed in permissions. (#143)
a0a79e91d9 is described below

commit a0a79e91d9749db9477702e2811dac5460cb832b
Author: David Matějček <[email protected]>
AuthorDate: Fri May 13 14:30:10 2022 +0200

    FELIX-6522 Empty name is not allowed in permissions. (#143)
    
    - presumption: such capability can be removed as impliesDirect would return
      false too.
---
 .../org/apache/felix/framework/BundleWiringImpl.java   | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git 
a/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java 
b/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
index 0e970bc379..ea2536c689 100644
--- a/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/BundleWiringImpl.java
@@ -389,10 +389,15 @@ public class BundleWiringImpl implements BundleWiring
 
         if (System.getSecurityManager() != null)
         {
-            for (Iterator<BundleCapability> iter = 
capList.iterator();iter.hasNext();)
+            for (Iterator<BundleCapability> iter = capList.iterator(); 
iter.hasNext();)
             {
                 BundleCapability cap = iter.next();
-                if 
(cap.getNamespace().equals(BundleRevision.PACKAGE_NAMESPACE))
+                String bundleNamespace = cap.getNamespace();
+                if (bundleNamespace.isEmpty())
+                {
+                    iter.remove();
+                }
+                else if 
(bundleNamespace.equals(BundleRevision.PACKAGE_NAMESPACE))
                 {
                     if (!((BundleProtectionDomain) ((BundleRevisionImpl) 
cap.getRevision()).getProtectionDomain()).impliesDirect(
                             new PackagePermission((String) 
cap.getAttributes().get(BundleRevision.PACKAGE_NAMESPACE), 
PackagePermission.EXPORTONLY)))
@@ -400,11 +405,12 @@ public class BundleWiringImpl implements BundleWiring
                         iter.remove();
                     }
                 }
-                else if 
(!cap.getNamespace().equals(BundleRevision.HOST_NAMESPACE) && 
!cap.getNamespace().equals(BundleRevision.BUNDLE_NAMESPACE) &&
-                        !cap.getNamespace().equals("osgi.ee"))
+                else if (!bundleNamespace.equals(BundleRevision.HOST_NAMESPACE)
+                    && !bundleNamespace.equals(BundleRevision.BUNDLE_NAMESPACE)
+                    && !bundleNamespace.equals("osgi.ee"))
                 {
-                    if (!((BundleProtectionDomain) ((BundleRevisionImpl) 
cap.getRevision()).getProtectionDomain()).impliesDirect(
-                            new CapabilityPermission(cap.getNamespace(), 
CapabilityPermission.PROVIDE)))
+                    CapabilityPermission permission = new 
CapabilityPermission(bundleNamespace, CapabilityPermission.PROVIDE);
+                    if (!((BundleProtectionDomain) ((BundleRevisionImpl) 
cap.getRevision()).getProtectionDomain()).impliesDirect(permission))
                     {
                         iter.remove();
                     }

Reply via email to