private void caseInstanceInvokeExpr(InstanceInvokeExpr expr) { result = result.add(mgr.RESOLVE_METHOD_ERRORS); result = result.add(mgr.NULL_POINTER_EXCEPTION); for (int i = 0; i < expr.getArgCount(); i++) { result = result.add(mightThrow(expr.getArg(i))); } result = result.add(mightThrow(expr.getBase())); result = result.add(mightThrow(expr.getMethodRef())); } }
@Override public void methodInvoke(SootMethod container, Stmt invokeStmt) { if (container.getDeclaringClass().isJavaLibraryClass()) { super.methodInvoke(container, invokeStmt); return; } InstanceInvokeExpr d = (InstanceInvokeExpr) invokeStmt.getInvokeExpr(); Value base = d.getArg(0); // TODO no support for statics at the moment // SA: Better just fall back to degraded functionality than fail // altogether if (!(base instanceof Local)) { super.methodInvoke(container, invokeStmt); return; } addInvokeCallSite(invokeStmt, container, d); } }
|| subSig == sigHandlerPostDelayed) { if (iie.getArgCount() > 0) { Value runnable = iie.getArg(0); if (runnable instanceof Local) { addVirtualCallSite(s, m, (Local) runnable, iie, sigRun, Kind.EXECUTOR);
private void caseInstanceInvokeExpr(InstanceInvokeExpr expr) { result = result.add(mgr.RESOLVE_METHOD_ERRORS); result = result.add(mgr.NULL_POINTER_EXCEPTION); for (int i = 0; i < expr.getArgCount(); i++) { result = result.add(mightThrow(expr.getArg(i))); } result = result.add(mightThrow(expr.getBase())); result = result.add(mightThrow(expr.getMethod())); } }
Value arg = iie.getArg(0); SootMethod tgt = e.getTgt().method();
private void caseInstanceInvokeExpr(InstanceInvokeExpr expr) { result = result.add(mgr.RESOLVE_METHOD_ERRORS); result = result.add(mgr.NULL_POINTER_EXCEPTION); for (int i = 0; i < expr.getArgCount(); i++) { result = result.add(mightThrow(expr.getArg(i))); } result = result.add(mightThrow(expr.getBase())); result = result.add(mightThrow(expr.getMethod())); } }
@Override public Set<Value> computeTargets(Value source) { if (logger.isDebugEnabled()) { logger.debug("Copy constructor " + call); logger.debug("Source: " + source); } Set<Value> result = new HashSet<Value>(); InstanceInvokeExpr instanceInvokeExpr = (InstanceInvokeExpr) invokeExpr; Value base = instanceInvokeExpr.getBase(); Value argument = instanceInvokeExpr.getArg(copyConstructorArguments[0].getArgnum()[0]); if (!source.equivTo(base)) { result.add(source); } if (argument.equivTo(source)) { result.add(base); } if (logger.isDebugEnabled()) { logger.debug("Returning " + result); } return result; } };
String param = type.toString(); if (androidCallbacks.contains(param)) { Value arg = iinv.getArg(i);
InstanceInvokeExpr iiexpr = (InstanceInvokeExpr) fromStmt.getInvokeExpr(); args.add(iiexpr.getBase()); args.add(iiexpr.getArg(0)); } else if (fromStmt.toString().contains("bindService")) { Value arg0 = fromStmt.getInvokeExpr().getArg(0); // intent
if (taintedPath.getPlainValue() == iinv.getArg(0)) { RefType rt = (RefType) iinv.getBase().getType(); AccessPath ap = manager.getAccessPathFactory().createAccessPath(iinv.getBase(), res.add(ap); if (taintedPath.getPlainValue() == iinv.getArg(1)) { RefType rt = (RefType) iinv.getBase().getType(); AccessPath ap = manager.getAccessPathFactory().createAccessPath(iinv.getBase(), if (taintedPath.getPlainValue() == iinv.getArg(0)) { RefType rt = (RefType) iinv.getBase().getType(); AccessPath ap = manager.getAccessPathFactory().createAccessPath(iinv.getBase(),
if (taintedPath.getPlainValue() == iinv.getArg(0)) { RefType rt = (RefType) iinv.getBase().getType(); AccessPath ap = manager.getAccessPathFactory().createAccessPath(iinv.getBase(), res.add(ap); if (taintedPath.getPlainValue() == iinv.getArg(1)) { RefType rt = (RefType) iinv.getBase().getType(); AccessPath ap = manager.getAccessPathFactory().createAccessPath(iinv.getBase(), if (taintedPath.getPlainValue() == iinv.getArg(0)) { RefType rt = (RefType) iinv.getBase().getType(); AccessPath ap = manager.getAccessPathFactory().createAccessPath(iinv.getBase(),