Dataflow: Move Stage1 to its own file. Stick flow exploration in there as well.

This commit is contained in:
Anders Schack-Mulligen
2025-01-29 11:39:14 +01:00
parent 02a81a0897
commit 04db61a0fe
4 changed files with 2365 additions and 2115 deletions

View File

@@ -643,6 +643,7 @@ private module PathGraphSigMod {
module DataFlowMake<LocationSig Location, InputSig<Location> Lang> {
private import Lang
private import internal.DataFlowImpl::MakeImpl<Location, Lang>
private import internal.DataFlowImplStage1::MakeImplStage1<Location, Lang>
import Configs<Location, Lang>
/**
@@ -700,7 +701,13 @@ module DataFlowMake<LocationSig Location, InputSig<Location> Lang> {
}
}
import Impl<C>
private module Stage1 = ImplStage1<C>;
import Stage1::PartialFlow
private module Flow = Impl<C, Stage1::Stage1NoState>;
import Flow
}
/**
@@ -723,7 +730,13 @@ module DataFlowMake<LocationSig Location, InputSig<Location> Lang> {
}
}
import Impl<C>
private module Stage1 = ImplStage1<C>;
import Stage1::PartialFlow
private module Flow = Impl<C, Stage1::Stage1NoState>;
import Flow
}
signature class PathNodeSig {

View File

@@ -5,6 +5,7 @@
private import DataFlow as DF
private import internal.DataFlowImpl
private import internal.DataFlowImplStage1
private import codeql.util.Location
/**
@@ -47,6 +48,7 @@ module TaintFlowMake<
private import TaintTrackingLang
private import DF::DataFlowMake<Location, DataFlowLang> as DataFlow
private import MakeImpl<Location, DataFlowLang> as DataFlowInternal
private import MakeImplStage1<Location, DataFlowLang> as DataFlowInternalStage1
private module AddTaintDefaults<DataFlowInternal::FullStateConfigSig Config> implements
DataFlowInternal::FullStateConfigSig
@@ -94,7 +96,13 @@ module TaintFlowMake<
import AddTaintDefaults<Config0>
}
import DataFlowInternal::Impl<C>
private module Stage1 = DataFlowInternalStage1::ImplStage1<C>;
import Stage1::PartialFlow
private module Flow = DataFlowInternal::Impl<C, Stage1::Stage1NoState>;
import Flow
}
/**
@@ -122,7 +130,13 @@ module TaintFlowMake<
import AddTaintDefaults<Config0>
}
import DataFlowInternal::Impl<C>
private module Stage1 = DataFlowInternalStage1::ImplStage1<C>;
import Stage1::PartialFlow
private module Flow = DataFlowInternal::Impl<C, Stage1::Stage1NoState>;
import Flow
}
signature int speculationLimitSig();
@@ -218,7 +232,13 @@ module TaintFlowMake<
import AddTaintDefaults<AddSpeculativeTaintSteps<Config0, speculationLimit/0>>
}
import DataFlowInternal::Impl<C>
private module Stage1 = DataFlowInternalStage1::ImplStage1<C>;
import Stage1::PartialFlow
private module Flow = DataFlowInternal::Impl<C, Stage1::Stage1NoState>;
import Flow
}
/**
@@ -250,6 +270,12 @@ module TaintFlowMake<
import AddTaintDefaults<AddSpeculativeTaintSteps<Config0, speculationLimit/0>>
}
import DataFlowInternal::Impl<C>
private module Stage1 = DataFlowInternalStage1::ImplStage1<C>;
import Stage1::PartialFlow
private module Flow = DataFlowInternal::Impl<C, Stage1::Stage1NoState>;
import Flow
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff