@@ -12,16 +12,28 @@ private import DataFlowImplSpecific::Public
1212module Input implements InputSig< Location , DataFlowImplSpecific:: PowershellDataFlow > {
1313 private import codeql.util.Void
1414
15- class SummarizedCallableBase = string ;
15+ class SummarizedCallableBase extends string {
16+ bindingset [ this ]
17+ SummarizedCallableBase ( ) { exists ( this ) }
1618
17- class SourceBase = Void ;
19+ bindingset [ this ]
20+ Location getLocation ( ) { result instanceof EmptyLocation }
21+ }
22+
23+ class SourceBase extends Void {
24+ Location getLocation ( ) { none ( ) }
25+ }
1826
19- class SinkBase = Void ;
27+ class SinkBase = SourceBase ;
2028
21- class FlowSummaryCallBase = Void ;
29+ class FlowSummaryCallBase = SourceBase ;
2230
2331 predicate callableFromSource ( SummarizedCallableBase c ) { none ( ) }
2432
33+ DataFlowCallable getSummarizedCallableAsDataFlowCallable ( SummarizedCallableBase c ) {
34+ result .asLibraryCallable ( ) = c
35+ }
36+
2537 ArgumentPosition callbackSelfParameterPosition ( ) { none ( ) }
2638
2739 ReturnKind getStandardReturnValueKind ( ) { result instanceof NormalReturnKind }
@@ -125,28 +137,35 @@ module Input implements InputSig<Location, DataFlowImplSpecific::PowershellDataF
125137
126138private import Make< Location , DataFlowImplSpecific:: PowershellDataFlow , Input > as Impl
127139
128- private module StepsInput implements Impl:: Private:: StepsInputSig {
129- Impl:: Private:: SummaryNode getSummaryNode ( Node n ) {
130- result = n .( FlowSummaryNode ) .getSummaryNode ( )
140+ private module Input2 implements Impl:: Private:: InputSig2 {
141+ private import codeql.util.Void
142+
143+ class SourceSinkReportingElement extends Void {
144+ Location getLocation ( ) { none ( ) }
145+
146+ DataFlowCallable getEnclosingCallable ( ) { none ( ) }
147+
148+ SourceSinkReportingElement getASuccessor ( Impl:: Private:: SummaryComponent sc ) { none ( ) }
131149 }
150+ }
151+
152+ private import Impl:: Private:: Make2< Input2 > as Impl2
153+
154+ private module StepsInput implements Impl2:: StepsInputSig {
155+ Impl2:: SummaryNode getSummaryNode ( Node n ) { result = n .( FlowSummaryNode ) .getSummaryNode ( ) }
132156
133157 DataFlowCall getACall ( Public:: SummarizedCallable sc ) {
134158 result .asCall ( ) .getAstNode ( ) = sc .( LibraryCallable ) .getACall ( )
135159 or
136160 result .asCall ( ) .getAstNode ( ) = sc .( LibraryCallable ) .getACallSimple ( )
137161 }
138-
139- Node getSourceNode ( Input:: SourceBase source , Impl:: Private:: SummaryComponentStack sc ) { none ( ) }
140-
141- DataFlowCallable getSourceNodeEnclosingCallable ( Input:: SourceBase source ) { none ( ) }
142-
143- Node getSinkNode ( Input:: SinkBase source , Impl:: Private:: SummaryComponent sc ) { none ( ) }
144162}
145163
146164module Private {
147165 import Impl:: Private
166+ import Impl2
148167
149- module Steps = Impl :: Private :: Steps< StepsInput > ;
168+ module Steps = Impl2 :: Steps< StepsInput > ;
150169
151170 /**
152171 * Provides predicates for constructing summary components.
0 commit comments