Merge pull request #18298 from hvitved/rust/mad-source-sink

Rust: Add support for MaD sources and sinks with access paths
This commit is contained in:
Tom Hvitved
2025-01-10 11:49:51 +01:00
committed by GitHub
22 changed files with 948 additions and 58 deletions

View File

@@ -27,8 +27,14 @@ private string positionToString(int pos) {
}
module Input implements InputSig<Location, DataFlowImplSpecific::JavaDataFlow> {
private import codeql.util.Void
class SummarizedCallableBase = FlowSummary::SummarizedCallableBase;
class SourceBase = Void;
class SinkBase = Void;
predicate neutralElement(
Input::SummarizedCallableBase c, string kind, string provenance, boolean isExact
) {
@@ -123,12 +129,22 @@ private module TypesInput implements Impl::Private::TypesInputSig {
result = getErasedRepr(t.(FunctionalInterface).getRunMethod().getReturnType()) and
exists(rk)
}
DataFlowType getSourceType(Input::SourceBase source, Impl::Private::SummaryComponent sc) {
none()
}
DataFlowType getSinkType(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() }
}
private module StepsInput implements Impl::Private::StepsInputSig {
DataFlowCall getACall(Public::SummarizedCallable sc) {
sc = viableCallable(result).asSummarizedCallable()
}
Node getSourceNode(Input::SourceBase source, Impl::Private::SummaryComponent sc) { none() }
Node getSinkNode(Input::SinkBase sink, Impl::Private::SummaryComponent sc) { none() }
}
private predicate relatedArgSpec(Callable c, string spec) {