Refine search
Method findMethod(JavaClass clazz, String name, String sig) { Method[] m = clazz.getMethods(); for (Method aM : m) { if (aM.getName().equals(name) && aM.getSignature().equals(sig)) { return aM; } } return null; }
private static boolean isVoidConstructor(JavaClass clazz, Method m) { String outerClassSignature = getSignatureOfOuterClass(clazz); if (outerClassSignature == null) { outerClassSignature = ""; } return Const.CONSTRUCTOR_NAME.equals(m.getName()) && m.getSignature().equals("(" + outerClassSignature + ")V"); }
@Override protected Iterable<Method> getMethodVisitOrder(JavaClass obj) { ArrayList<Method> visitOrder = new ArrayList<>(); Method staticInitializer = null; for(Method m : obj.getMethods()) { String name = m.getName(); if (Const.STATIC_INITIALIZER_NAME.equals(name)) { staticInitializer = m; } else if (Const.CONSTRUCTOR_NAME.equals(name)) { visitOrder.add(m); } } if (staticInitializer != null) { visitOrder.add(staticInitializer); } return visitOrder; }
Set<String> definedInClass(JavaClass clazz) { HashSet<String> result = new HashSet<>(); for (Method m : clazz.getMethods()) { if (!skip(m)) { result.add(m.getName() + m.getSignature()); } } return result; }
public static boolean isMainMethod(Method method) { return method.isStatic() && "main".equals(method.getName()) && "([Ljava/lang/String;)V".equals(method.getSignature()); }
@Override public void visit(JavaClass javaClass) { staticInitializerSeen = false; Method[] methods = javaClass.getMethods(); for (Method method : methods) { if (method.getName().equals(STATIC_INITIALIZER_NAME)) { // check field initialization before visiting methods doVisitMethod(method); staticInitializerSeen = true; break; } } isFirstArrayStore = false; wasToConstArrayConversion = false; }
public static Method findImplementation(JavaClass clazz, String name, String signature) { Method[] m = clazz.getMethods(); for (Method aM : m) { if (aM.getName().equals(name) && aM.getSignature().equals(signature) && !aM.isPrivate() && !aM.isStatic()) { return aM; } } return null; } }
/** is there a JUnit3TestSuite */ private boolean hasSuite(Method[] methods) { for (Method m : methods) { if (m.getName().equals("suite") && m.isPublic() && m.isStatic() // && m.getReturnType().equals(junit.framework.Test.class) // && m.getArgumentTypes().length == 0 && m.getSignature().equals("()Ljunit/framework/Test;")) { return true; } } return false; }
@Override public void visitClassContext(ClassContext classContext) { JavaClass javaClass = classContext.getJavaClass(); //The class extends WebChromeClient boolean isWebChromeClient = InterfaceUtils.isSubtype(javaClass, "android.webkit.WebChromeClient"); //Not the target of this detector if (!isWebChromeClient) { return; } Method[] methodList = javaClass.getMethods(); for (Method m : methodList) { if (DEBUG) { System.out.println(">>> Method: " + m.getName()); } //The presence of onGeolocationPermissionsShowPrompt is not enforce for the moment if (!m.getName().equals("onGeolocationPermissionsShowPrompt")) { continue; } //Since the logic implemented need to be analyze by a human, all implementation will be flagged. bugReporter.reportBug(new BugInstance(this, ANDROID_GEOLOCATION_TYPE, Priorities.NORMAL_PRIORITY) // .addClassAndMethod(javaClass, m)); } }
boolean definedInThisClassOrSuper(JavaClass clazz, String method) throws ClassNotFoundException { if (clazz == null) { return false; } // System.out.println("Checking to see if " + method + " is defined in " // + clazz.getClassName()); for (Method m : clazz.getMethods()) { String key = m.getName() + ":" + m.getSignature(); if (!m.isStatic() && method.equals(key)) { return true; } } return definedInSuperClassOrInterface(clazz, method); }
/** * @param obj * the method to parse * @return a descriptor for the method */ protected MethodDescriptor parseMethod(Method obj) { return new MethodDescriptor(slashedClassName, obj.getName(), obj.getSignature(), obj.isStatic()); }
@Override public void visitClassContext(ClassContext classContext) { JavaClass javaClass = classContext.getJavaClass(); //The class extends HttpServletRequestWrapper boolean isRequestWrapper = InterfaceUtils.isSubtype(javaClass, "javax.servlet.http.HttpServletRequestWrapper"); //Not the target of this detector if (!isRequestWrapper) return; Method[] methodList = javaClass.getMethods(); for (Method m : methodList) { if (m.getName().equals("stripXSS")) { bugReporter.reportBug(new BugInstance(this, XSS_REQUEST_WRAPPER_TYPE, Priorities.NORMAL_PRIORITY) // .addClassAndMethod(javaClass, m)); return; } } }
public @Nonnull List<Method> getMethodsInCallOrder() { Map<XMethod, Method> map = new HashMap<>(); for (Method m : getJavaClass().getMethods()) { XMethod xMethod = classInfo.findMethod(m.getName(), m.getSignature(), m.isStatic()); map.put(xMethod, m); } List<? extends XMethod> xmethodsInCallOrder = classInfo.getXMethodsInCallOrder(); List<Method> methodsInCallOrder = new ArrayList<>(xmethodsInCallOrder.size()); for (XMethod x : xmethodsInCallOrder) { Method m = map.get(x); if (m != null) { methodsInCallOrder.add(m); } } return methodsInCallOrder; }
/** * Convenience method for generating a method signature in human readable * form. * * @param javaClass * the class * @param method * the method */ public static String convertMethodSignature(JavaClass javaClass, Method method) { return convertMethodSignature(javaClass.getClassName(), method.getName(), method.getSignature()); }
public static boolean isJSP(JavaClass javaClass) { @DottedClassName String className = javaClass.getClassName(); if ( className.endsWith("_jsp") || className.endsWith("_tag")) { return true; } for(Method m : javaClass.getMethods()) { if (m.getName().startsWith("_jsp")) { return true; } } for(Field f : javaClass.getFields()) { if (f.getName().startsWith("_jsp")) { return true; } } return Subtypes2.instanceOf(className, "javax.servlet.jsp.JspPage") || Subtypes2.instanceOf(className, "org.apache.jasper.runtime.HttpJspBase") || Subtypes2.instanceOf(className, "javax.servlet.jsp.tagext.SimpleTagSupport") || Subtypes2.instanceOf(className, " org.apache.jasper.runtime.JspSourceDependent"); }
private boolean classDefinesMethod(JavaClass c, XMethod m) { for (Method definedMethod : c.getMethods()) { if (definedMethod.getName().equals(m.getName()) && definedMethod.getSignature().equals(m.getSignature()) && definedMethod.isStatic() == m.isStatic()) { return true; } } return false; }
@Override public String toString() { return this.getClass().getSimpleName() + "(" + methodGen.getClassName() + "." + methodGen.getMethod().getName() + methodGen.getMethod().getSignature() + ")"; }
Method[] methodList = javaClass.getMethods(); if (method.isPublic() && !isConstructor(method.getName())) { lockedMethodSet.remove(method); System.out.println("Apparently not unlocked methods:"); for (Method method : lockedMethodSet) { System.out.println("\t" + method.getName());
@Override public void visitClassContext(ClassContext classContext) { JavaClass javaClass = classContext.getJavaClass(); for (Method m : javaClass.getMethods()) { if ("execute".equals(m.getName()) && "()Ljava/lang/String;".equals(m.getSignature())) { bugReporter.reportBug(new BugInstance(this, STRUTS2_ENDPOINT_TYPE, Priorities.LOW_PRIORITY) // .addClass(javaClass)); } } }
public String getFullyQualifiedMethodName(Method method) { return getClassDescriptor().getDottedClassName() + "." + method.getName() + method.getSignature(); }