[ 
https://issues.apache.org/jira/browse/FELIX-1479?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12743480#action_12743480
 ] 

Felix Meschberger edited comment on FELIX-1479 at 8/14/09 3:51 PM:
-------------------------------------------------------------------

Committed a modified FilePersistenceManager, which checks for the system 
SecurityManager and if set uses an AccessControlContext setup at construction 
time to run operations as privileged actions in Rev. 804404.

Sending a SNAPSHOT containing these changes to the reporter for cross-checking.

(BTW: The FailureActivator class committed with this revision does not belong 
in the SVN yet and is removed)

      was (Author: fmeschbe):
    Committed a modified FilePersistenceManager, which checks for the system 
SecurityManager and if set uses an AccessControlContext setup at construction 
time to run operations as privileged actions in Rev. 804404.

Sending a SNAPSHOT containing these changes to the reporter for cross-checking.
  
> Security errors accessing configurations in the file system
> -----------------------------------------------------------
>
>                 Key: FELIX-1479
>                 URL: https://issues.apache.org/jira/browse/FELIX-1479
>             Project: Felix
>          Issue Type: Bug
>          Components: Configuration Admin
>    Affects Versions: configadmin-1.0.10
>            Reporter: Felix Meschberger
>            Assignee: Felix Meschberger
>             Fix For: configadmin-1.0.12
>
>
> When the FilePersistenceManager is trying to access the configuration files 
> it currently does this in the security context of the calling bundle. If the 
> calling bundle does not have file access permissions, this access fails 
> (unexpectedly).
> The fix is to ensure running in doPrivileged using the configuration admin 
> bundle's security context to access the files.
> More informations from the original reporter:
> There seems no test of that SecurityException is thrown because
> a configuring bundle CB does not have appropriate Permission to call
> ConfigurationAdmin#getConfiguration(pid,location).
> # In testGetConfigurationWithLocation(), CB can get a Configuration
> # objects because it has AllPermission.
> As far as I see, felix cm impl has a bug if the Java Runtime supports
> security. In my test, the following Exception is thrown. (
> Currently, the CB fails to get a Configuration. The reason is CB has no
> permission to access a file FilePersistenceManager handles.
> "doPriviledge" in seems required to avoid it.
> ----
> locations[0]=C:\ws\OSGiSVN\cnf\repo\osgi.cmpn\osgi.cmpn-4.2.1.jar
>                 (java.security.AllPermission)
> locations[1]=targetB1.jar
>                 (java.security.AllPermission)
> locations[2]=C:\ws\OSGiSVN\licensed\repo\org.apache.felix.configadmin\org.apache.felix.configadmin-1.0.10.jar
>                 (java.security.AllPermission)
> locations[3]=C:\ws\OSGiSVN\org.osgi.test.cases.cm.ext\generated\org.osgi.test.cases.cm.ext.jar
>                 (java.security.AllPermission)
> locations[4]=setAllPermission.jar
>                 (java.security.AllPermission)
> locations[5]=configuringB1.jar
>                 (org.osgi.framework.PackagePermission "org.osgi.service.cm" 
> "IMPORT")
>                 (org.osgi.framework.ServicePermission 
> "org.osgi.service.cm.ConfigurationAdmin" "GET")
>                 (org.osgi.framework.PackagePermission 
> "org.osgi.test.cases.cm.ext.util" "IMPORT")
>                 (org.osgi.framework.ServicePermission 
> "org.osgi.test.cases.cm.ext.util.ResultKeeper" "REGISTER")
>                 (org.osgi.framework.PackagePermission "org.osgi.framework" 
> "IMPORT")
>                 (org.osgi.service.cm.ConfigurationPermission "*" "CONFIGURE")
> locations[6]=System Bundle
>                 (java.security.AllPermission)
> default permission=
>                 (java.util.PropertyPermission "java.home" "read")
> org.osgi.framework.BundleException: Exception in 
> org.osgi.test.cases.cm.ext.configuringB1.ConfiguringActivator.start() of 
> bundle org.osgi.test.cases.cm.ext.configuringB1.
>                 at 
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:805)
>                 at 
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:754)
>                 at 
> org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
>                 at 
> org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:280)
>                 at 
> org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:272)
>                 at 
> org.osgi.test.cases.cm.ext.tbc.CmExtTestControl.startBundleAndCheckSecurityException(CmExtTestControl.java:2120)
>                 at 
> org.osgi.test.cases.cm.ext.tbc.CmExtTestControl.testGetConfigurationWithLocation1_1_1(CmExtTestControl.java:227)
>                 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>                 at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>                 at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>                 at java.lang.reflect.Method.invoke(Method.java:324)
>                 at junit.framework.TestCase.runTest(TestCase.java:164)
>                 at junit.framework.TestCase.runBare(TestCase.java:130)
>                 at junit.framework.TestResult$1.protect(TestResult.java:106)
>                 at 
> junit.framework.TestResult.runProtected(TestResult.java:124)
>                 at junit.framework.TestResult.run(TestResult.java:109)
>                 at junit.framework.TestCase.run(TestCase.java:120)
>                 at junit.framework.TestSuite.runTest(TestSuite.java:230)
>                 at junit.framework.TestSuite.run(TestSuite.java:225)
>                 at junit.framework.TestSuite.runTest(TestSuite.java:230)
>                 at junit.framework.TestSuite.run(TestSuite.java:225)
>                 at aQute.junit.runtime.Target.doTesting(Target.java:158)
>                 at aQute.junit.runtime.Target.run(Target.java:42)
>                 at aQute.junit.runtime.Target.main(Target.java:33)
> Caused by: java.security.AccessControlException: access denied
> (java.io.FilePermission C:\ws\OSGiSVN\org.osgi.test.cases.cm.ext\generat
> ed\fwtmp\org.eclipse.osgi\bundles\1\data\config\cm\ext\pid1.config read)
>                 at 
> java.security.AccessControlContext.checkPermission(AccessControlContext.java:269)
>                 at 
> org.eclipse.osgi.internal.permadmin.EquinoxSecurityManager.internalCheckPermission(EquinoxSecurityManager.java:117)
>                 at 
> org.eclipse.osgi.internal.permadmin.EquinoxSecurityManager$CheckPermissionAction.run(EquinoxSecurityManager.java:60)
>                 at java.security.AccessController.doPrivileged(Native Method)
>                 at 
> org.eclipse.osgi.internal.permadmin.EquinoxSecurityManager.checkPermission(EquinoxSecurityManager.java:88)
>                 at 
> org.eclipse.osgi.internal.permadmin.EquinoxSecurityManager.checkPermission(EquinoxSecurityManager.java:187)
>                 at 
> java.lang.SecurityManager.checkRead(SecurityManager.java:863)
>                 at java.io.File.isFile(File.java:723)
>                 at 
> org.apache.felix.cm.file.FilePersistenceManager.exists(FilePersistenceManager.java:388)
>                 at 
> org.apache.felix.cm.impl.ConfigurationManager.getExistingConfiguration(ConfigurationManager.java:375)
>                 at 
> org.apache.felix.cm.impl.ConfigurationManager.getConfiguration(ConfigurationManager.java:391)
>                 at 
> org.apache.felix.cm.impl.ConfigurationAdminImpl.getConfiguration(ConfigurationAdminImpl.java:116)
>                 at 
> org.osgi.test.cases.cm.ext.configuringB1.ConfiguringActivator.start(ConfiguringActivator.java:25)
>                 at 
> org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:782)
>                 at java.security.AccessController.doPrivileged(Native Method)
>                 at 
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:773)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to