evaluate method
Evaluates the rule and returns derived facts.
Implementation
@override
List<Fact> evaluate(
Map<String, List<List<Object>>> facts,
Map<String, List<List<Object>>> derived,
) {
final result = <Fact>[];
final sinks = facts['TaintSink'] ?? [];
final tainted = getCombined('TaintedVar', facts, derived);
for (final sink in sinks) {
final sinkVar = sink[0];
final sinkLabel = sink[1];
for (final t in tainted) {
if (t[0] == sinkVar) {
// Violation: tainted data reached sink
result.add(Fact('TaintViolation', [sinkVar, t[1], t[2], sinkLabel]));
}
}
}
return result;
}