@Override public void validate(Body body, List<ValidationException> exceptions) { for (Unit u : body.getUnits()) { Stmt s = (Stmt) u; if (s.containsInvokeExpr()) { InvokeExpr iinvExpr = s.getInvokeExpr(); SootMethod callee = iinvExpr.getMethod(); if (callee != null && iinvExpr.getArgCount() != callee.getParameterCount()) { exceptions.add(new ValidationException(s, "Invalid number of arguments")); } } } }
private void changeUntypedConstantsInInvoke(InvokeExpr invokeExpr) { for (int i = 0; i < invokeExpr.getArgCount(); i++) { Value v = invokeExpr.getArg(i); if (!(v instanceof UntypedConstant)) { continue; } Type t = invokeExpr.getMethodRef().parameterType(i); UntypedConstant uc = (UntypedConstant) v; invokeExpr.setArg(i, uc.defineType(t)); } }
public void caseInvokeExpr(InvokeExpr ie) { inInvokeExpr(ie); for (int i = 0; i < ie.getArgCount(); i++) { caseExprOrRefValueBox(ie.getArgBox(i)); // decideCaseExprOrRef(ie.getArg(i)); } if (ie instanceof InstanceInvokeExpr) { caseInstanceInvokeExpr((InstanceInvokeExpr) ie); } outInvokeExpr(ie); }
protected void setInvokeType(InvokeExpr invokeExpr) { for (int i = 0; i < invokeExpr.getArgCount(); i++) { Value v = invokeExpr.getArg(i); if (!(v instanceof Local)) { continue; } Type t = invokeExpr.getMethodRef().parameterType(i); DalvikTyper.v().setType(invokeExpr.getArgBox(i), t, true); } if (invokeExpr instanceof StaticInvokeExpr) { // nothing to do } else if (invokeExpr instanceof InstanceInvokeExpr) { InstanceInvokeExpr iie = (InstanceInvokeExpr) invokeExpr; DalvikTyper.v().setType(iie.getBaseBox(), RefType.v("java.lang.Object"), true); } else if (invokeExpr instanceof DynamicInvokeExpr) { DynamicInvokeExpr die = (DynamicInvokeExpr) invokeExpr; // ? } else { throw new RuntimeException("error: unhandled invoke expression: " + invokeExpr + " " + invokeExpr.getClass()); } }
private void handleInvokeExpr(InvokeExpr ie, Stmt stmt) { SootMethodRef m = ie.getMethodRef(); if (ie instanceof InstanceInvokeExpr) { InstanceInvokeExpr iie = (InstanceInvokeExpr) ie; iie.setBase(this.uv.visit(iie.getBase(), m.declaringClass().getType(), stmt)); } for (int i = 0; i < ie.getArgCount(); i++) { ie.setArg(i, this.uv.visit(ie.getArg(i), m.parameterType(i), stmt)); } }
int argCount = stmt.getInvokeExpr().getArgCount(); for (int i = 0; i < argCount; i++) { uses.add(ie.getArg(i));
InvokeExpr iexpr = s.getInvokeExpr(); int argnum = iexpr.getArgCount();
int argCount = stmt.getInvokeExpr().getArgCount(); for (int i = 0; i < argCount; i++) { ret.union(addValue(stmt.getInvokeExpr().getArg(i), method, stmt));
if (called.parameterTypes().size() != iexpr.getArgCount()) { exception.add(new ValidationException(stmt, "Argument count does not match the signature of the called function", "Warning: Argument count doesn't match up with signature in call" + errorSuffix + " in " + body.getMethod())); } else { for (int i = 0; i < iexpr.getArgCount(); i++) { checkCopy(stmt, body, exception, Type.toMachineType(called.parameterType(i)), Type.toMachineType(iexpr.getArg(i).getType()),
for (int i = 0; i < ie.getArgCount(); i++) { Value arg = ie.getArg(i);
if (stmt.containsInvokeExpr()) { InvokeExpr invExpr = stmt.getInvokeExpr(); for (int i = 0; i < invExpr.getArgCount(); i++) { if (isObject(invExpr.getMethodRef().parameterType(i))) { if (invExpr.getArg(i) instanceof IntConstant) {
InvokeExpr ie = s.getInvokeExpr(); boolean virtualCall = callAssigns.containsKey(ie); int numArgs = ie.getArgCount(); for (int i = 0; i < numArgs; i++) { Value arg = ie.getArg(i);
private void handleInvokeExpr(InvokeExpr ie) { if (!uses) { return; } // Handle the parameters SootMethodRef method = ie.getMethodRef(); for (int i = 0; i < ie.getArgCount(); i++) { if (ie.getArg(i) instanceof Local) { Local local = (Local) ie.getArg(i); if (local.getType() instanceof IntegerType) { TypeVariable localType = resolver.typeVariable(local); localType.addParent(resolver.typeVariable(method.parameterType(i))); } } } if (ie instanceof DynamicInvokeExpr) { DynamicInvokeExpr die = (DynamicInvokeExpr) ie; SootMethodRef bootstrapMethod = die.getBootstrapMethodRef(); for (int i = 0; i < die.getBootstrapArgCount(); i++) { if (die.getBootstrapArg(i) instanceof Local) { Local local = (Local) die.getBootstrapArg(i); if (local.getType() instanceof IntegerType) { TypeVariable localType = resolver.typeVariable(local); localType.addParent(resolver.typeVariable(bootstrapMethod.parameterType(i))); } } } } }
for (int i = 0; i < ie.getArgCount(); i++) { if (ie.getArg(i) instanceof Local) { Local local = (Local) ie.getArg(i);
callingContext.setAllParamsShared(); } else { for (int param = 0; param < ie.getArgCount(); param++) { if (SmartMethodLocalObjectsAnalysis.isObjectLocal(dfa, containingMethod, containingContext, ie.getArg(param))) { callingContext.setParamLocal(param);
private void handleInvokeExpr(InvokeExpr ie, Stmt invokestmt) { for (int i = 0; i < ie.getArgCount(); i++) { if (ie.getArg(i) instanceof Local) { Local local = (Local) ie.getArg(i);
private void handleInvokeExpr(InvokeExpr ie, Stmt invokestmt) { for (int i = 0; i < ie.getArgCount(); i++) { if (ie.getArg(i) instanceof Local) { Local local = (Local) ie.getArg(i);
InvokeExpr ie = (InvokeExpr) e; for (int i = 0; i < ie.getArgCount(); i++) { walk_value(a, ie.getArg(i));
for (int i = 0; i < useStmt.getInvokeExpr().getArgCount(); i++) { if (useStmt.getInvokeExpr().getArg(i) == usePair.getValueBox().getValue()) { et = useStmt.getInvokeExpr().getMethod().getParameterType(i);
@Override public SourceInfo getSourceInfo(Stmt sCallSite, InfoflowManager manager) { if (sCallSite.containsInvokeExpr()) { InvokeExpr iexpr = sCallSite.getInvokeExpr(); String name = iexpr.getMethod().getName(); boolean includeExistingImmutableAliases = name.equals("annotatedSource"); if ((name.equals("source") || includeExistingImmutableAliases) && iexpr.getArgCount() > 0) { AccessPath ap = manager.getAccessPathFactory().createAccessPath(iexpr.getArg(0), null, null, null, true, false, true, AccessPath.ArrayTaintType.ContentsAndLength, true); return new SourceInfo(null, ap); } } return null; }