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();
}