@Override public String toString() { return method.getSignature(); }
@Override public String toString() { return method == null ? "<no method>" : method.getSignature(); }
/** * Gets the field or method signature of the given source/sink definition * * @param am * The source/sink definition for which to get a Soot signature * @return The Soot signature associated with the given source/sink definition */ private String getSignature(SourceSinkDefinition am) { if (am instanceof MethodSourceSinkDefinition) { MethodSourceSinkDefinition methodSource = (MethodSourceSinkDefinition) am; return methodSource.getMethod().getSignature(); } else if (am instanceof FieldSourceSinkDefinition) { FieldSourceSinkDefinition fieldSource = (FieldSourceSinkDefinition) am; return fieldSource.getFieldSignature(); } else if (am instanceof StatementSourceSinkDefinition) return GLOBAL_SIG; else throw new RuntimeException( String.format("Invalid type of source/sink definition: %s", am.getClass().getName())); }
/** * Creates a new instance of the {@link DefaultSourceSinkManager} class * * @param sourceSinkProvider The provider that defines source and sink methods */ public DefaultSourceSinkManager(ISourceSinkDefinitionProvider sourceSinkProvider) { this.sourceDefs = new HashSet<>(); this.sinkDefs = new HashSet<>(); // Load the sources for (SourceSinkDefinition ssd : sourceSinkProvider.getSources()) { if (ssd instanceof MethodSourceSinkDefinition) { MethodSourceSinkDefinition mssd = (MethodSourceSinkDefinition) ssd; sourceDefs.add(mssd.getMethod().getSignature()); } } // Load the sinks for (SourceSinkDefinition ssd : sourceSinkProvider.getSinks()) { if (ssd instanceof MethodSourceSinkDefinition) { MethodSourceSinkDefinition mssd = (MethodSourceSinkDefinition) ssd; sinkDefs.add(mssd.getMethod().getSignature()); } } }
if (methodSourceSinkDef.getCallType() == CallType.Return) { SootMethodAndClass method = methodSourceSinkDef.getMethod(); SootMethod m = Scene.v().grabMethod(method.getSignature()); if (m != null) sinkReturnMethods.put(m, methodSourceSinkDef);