[ 
https://issues.apache.org/jira/browse/FELIX-5914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Karl Pauls reassigned FELIX-5914:
---------------------------------

    Assignee: Karl Pauls

> issue with SecurityManagerEx
> ----------------------------
>
>                 Key: FELIX-5914
>                 URL: https://issues.apache.org/jira/browse/FELIX-5914
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-6.0.1
>            Reporter: Tom Rutchik
>            Assignee: Karl Pauls
>            Priority: Major
>             Fix For: framework-6.0.2
>
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> The class SecurityManagerEx is a wrapper class around 
> java.lang.SecurityManager so that it can expose access to the protected 
> method getClassContext which returns a Class[].
> The code as it currently is coded looks like this:
> {color:#000080}public {color}Class[] getClassContext()
> {return {color:#000080}super{color}.getClassContext(); }
> It looks fine, however, super.getClassContext() at least in the Android 
> implementation returns null.  Here's the Android's implementation code for 
> java.lanaguage.SecurityManager:
> {color:#000080}public {color}Object getSecurityContext() {
>  {color:#000080}return null{color};
> }
> SecurityManager.getClassContent() is called in the class BundleWiringImpl in 
> the method 
> {color:#000080}private {color}Object 
> tryImplicitBootDelegation({color:#000080}final {color}String name, 
> {color:#000080}final boolean {color}isClass)
> it passes the result of {color:#333333}SecurityManager.getClassContent() 
> (which is null - parameter name classes) to the method 
> doImplicitBootDelegation.  Here's what that code looks like:{color}
> {color:#000080}private {color}Object doImplicitBootDelegation(Class[] 
> classes, String name, {color:#000080}boolean {color}isClass)
>  {color:#000080}throws {color}ClassNotFoundException, 
> ResourceNotFoundException
> {
>  {color:#808080}// Start from 1 to skip security manager class.
> {color} {color:#000080}for {color}({color:#000080}int {color}i = 
> {color:#0000ff}1{color}; i < classes.{color:#660e7a}length{color}; i++)
> Since classes is null,  classes.length throws an exception. This problem has 
> in my case caused a bundleActivator not to be found.
> The best solution to the problem is to modify the 
> SecurityManagerEx.getClassContext routine to the following:
> {color:#000080}public {color}Class[] getClassContext()
> {
>  Class[] classes = {color:#000080}super{color}.getClassContext();
>  {color:#000080}if {color}(classes == {color:#000080}null{color}) classes = 
> {color:#000080}new {color}Class[{color:#0000ff}0{color}];
>  {color:#000080}return {color}classes;
> }



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to