Hi, I’ve also posted this to the Felix dev list, as the problem occurs when using Felix config admin with Equinox runtime.
I’m using org.eclipse.osgi_3.10.101.v20150820-1432.jar Thanks, — Derek > On 18 May 2016, at 18:58, Derek Baum <[email protected]> wrote: > > I’m running with a SecurityManager installed and a trivial security.policy > that grants AllPermission. > > This works fine when running using the Felix runtime; however when I switch > to Equinox I get security exceptions. > > I’m not yet sure whether the problem lies with Felix config admin (1.8.8), > Equinox runtime or elsewhere. > > > I’ve diagnosed the cause of the failure as follows: > > Felix config admin ManagedServiceTracker, uses doPrivileged() to invoke the > service.updated() method, with a new AccessControlContext: > > AccessController.doPrivileged(new PrivilegedExceptionAction() { > public Object run() throws ConfigurationException { > service.updated( properties ); > return null; > } > }, getAccessControlContext( service ) ); > > AccessControlContext getAccessControlContext( final Object ref ) { > return new AccessControlContext( new ProtectionDomain[] > { ref.getClass().getProtectionDomain() } ); > } > > > Felix and Equinox return different ProtectionDomain implementations: > > org.apache.felix.framework.BundleProtectionDomain > org.eclipse.osgi.internal.loader.ModuleClassLoader$GenerationProtectionDomain > > > Both implementations extend ProtectionDomain, but the Felix implementation > uses the 4-arg constructor: > > The permissions granted to this domain are dynamic; they include > both the static permissions passed to this constructor, and any > permissions granted to this domain by the current Policy at the > time a permission is checked. > > while the Equinox implementation uses the 2-arg constructor. > > The only permissions granted to this domain > are the ones specified; the current Policy will not be consulted > > > So the problem arises because Felix config admin is using doPrivileged() with > a new AccessControlContext(), constructed using the target classes > ProtectionDomain, and the ProtectionDomain returned when running on Equinox, > does not consult the current policy, so my security policy containing grant > AllPermission is ignored. > > > I’ve taken a quick look at the Equinox config admin implementation, and it > doesn’t use doPrivileged() or a new AccessControlContext(), > so the issue does not arise. > > > Any opinions on whether this issue lies in Felix config admin, Equinox > framework, or elsewhere? > > > Thanks, > > — > Derek > > > > > > > > >
_______________________________________________ equinox-dev mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/equinox-dev
