Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* Soot - a J*va Optimization Framework
   * Copyright (C) 2003 Feng Qian
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
   * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */

Simulates the native method side effects in class java.lang.SecurityManager

Author(s):
Feng Qian
<XXX>
 
 
 package soot.jimple.toolkits.pointer.nativemethods;
 
 import soot.*;
 
     public JavaLangSecurityManagerNativeNativeHelper helper ) { super(helper); }

  
Implements the abstract method simulateMethod. It distributes the request to the corresponding methods by signatures.
 
   public void simulateMethod(SootMethod method,
 			     ReferenceVariable thisVar,
 			     ReferenceVariable returnVar,
 			     ReferenceVariable params[]){
 
     String subSignature = method.getSubSignature();
 
     if (subSignature.equals("java.lang.Class[] getClassContext()")) {
       java_lang_SecurityManager_getClassContext(methodthisVar
 						returnVarparams);
       return;
 
     } else if (subSignature.equals("java.lang.ClassLoader currentClassLoader0()")){
 						    thisVar
 						    returnVar
 						    params);
       return;
 
     } else if (subSignature.equals("java.lang.Class currentLoadedClass0()")){
 						    thisVar,
 						    returnVar,
 						    params);
       return;
 
     } else {
       defaultMethod(methodthisVarreturnVarparams);
       return;
 
     }
   }
  
java.lang.SecurityManager *************
 
  
Returns the current execution stack as an array of classes. NOTE: an array of object may be created. protected native java.lang.Class getClassContext()[];
 
   public 
 						   ReferenceVariable thisVar,
 						   ReferenceVariable returnVar,
 						   ReferenceVariable params[]){
     .assignObjectTo(returnVar, Environment.v().getLeastArrayObject());
   }

  
Returns the class loader of the most recently executing method from a class defined using a non-system class loader. A non-system class loader is defined as being a class loader that is not equal to the system class loader (as returned by ClassLoader.getSystemClassLoader()) or one of its ancestors. NOTE: returns a variable pointing to the only class loader object. private native java.lang.ClassLoader currentClassLoader0();
 
  public 
			    SootMethod method,
			    ReferenceVariable thisVar,
			    ReferenceVariable returnVar,
			    ReferenceVariable params[]) {
    .assignObjectTo(returnVar, Environment.v().getClassLoaderObject());
  }

  
Returns a variable pointing to all class objects. private native java.lang.Class currentLoadedClass0();
  public 
					 SootMethod method,
					 ReferenceVariable returnVar,
					 ReferenceVariable params[]) {
    .assignObjectTo(returnVar, Environment.v().getClassObject());
  }

  
Both methods have NO side effects. protected native int classDepth(java.lang.String); private native int classLoaderDepth0();
New to GrepCode? Check out our FAQ X