| 1 19 20 26 27 package soot.jimple.toolkits.pointer.nativemethods; 28 29 import soot.*; 30 import soot.jimple.toolkits.pointer.representations.*; 31 import soot.jimple.toolkits.pointer.util.*; 32 33 public class JavaSecurityAccessControllerNative extends NativeMethodClass { 34 public JavaSecurityAccessControllerNative( NativeHelper helper ) { super(helper); } 35 36 41 public void simulateMethod(SootMethod method, 42 ReferenceVariable thisVar, 43 ReferenceVariable returnVar, 44 ReferenceVariable params[]){ 45 46 String subSignature = method.getSubSignature(); 47 48 if (subSignature.equals("java.lang.Object doPrivileged(java.security.PrivilegedAction)")){ 49 java_security_AccessController_doPrivileged(method, thisVar, 50 returnVar, params); 51 return; 52 53 } else if (subSignature.equals("java.lang.Object doPrivileged(java.security.PrivilegedExceptionAction)")){ 54 java_security_AccessController_doPrivileged(method, thisVar, 55 returnVar, params); 56 return; 57 58 } else if (subSignature.equals("java.lang.Object doPrivileged(java.security.PrivilegedAction,java.security.AccessControlContext)")){ 59 java_security_AccessController_doPrivileged(method, thisVar, 60 returnVar, params); 61 return; 62 63 } else if (subSignature.equals("java.lang.Object doPrivileged(java.security.PrivilegedExceptionAction,java.security.AccessControlContext)")){ 64 java_security_AccessController_doPrivileged(method, thisVar, 65 returnVar, params); 66 return; 67 68 } else if (subSignature.equals("java.security.AccessControlContext getStackAccessControlContext()")){ 69 java_security_AccessController_getStackAccessControlContext(method, 70 thisVar, 71 returnVar, 72 params); 73 return; 74 75 } else if (subSignature.equals("java.security.AccessControlContext getInheritedAccessControlContext()")){ 76 java_security_AccessController_getInheritedAccessControlContext( 77 method, 78 thisVar, 79 returnVar, 80 params); 81 return; 82 83 } else { 84 defaultMethod(method, thisVar, returnVar, params); 85 return; 86 87 } 88 } 89 90 91 109 public 110 void java_security_AccessController_doPrivileged( 111 SootMethod method, 112 ReferenceVariable thisVar, 113 ReferenceVariable returnVar, 114 ReferenceVariable params[]){ 115 helper.throwException(Environment.v().getPrivilegedActionExceptionObject()); 119 } 120 121 127 public 128 void java_security_AccessController_getStackAccessControlContext( 129 SootMethod method, 130 ReferenceVariable thisVar, 131 ReferenceVariable returnVar, 132 ReferenceVariable params[]){ 133 helper.assignObjectTo(returnVar, Environment.v().getLeastObject()); 134 } 135 136 137 143 public 144 void java_security_AccessController_getInheritedAccessControlContext( 145 SootMethod method, 146 ReferenceVariable thisVar, 147 ReferenceVariable returnVar, 148 ReferenceVariable params[]){ 149 helper.assignObjectTo(returnVar, Environment.v().getLeastObject()); 150 } 151 } 152 | Popular Tags |