@@ -35,6 +35,7 @@ signature module InputSig<DF::InputSig DataFlowLang> {
3535
3636 predicate defaultSink ( DataFlowLang:: Node source ) ;
3737
38+ bindingset [ src, sink]
3839 string getArgString ( DataFlowLang:: Node src , DataFlowLang:: Node sink ) ;
3940}
4041
@@ -62,7 +63,13 @@ module InlineFlowTestMake<
6263 predicate isSink ( DataFlowLang:: Node sink ) { none ( ) }
6364 }
6465
65- module FlowTest< DataFlow:: ConfigSig ValueFlowConfig, DataFlow:: ConfigSig TaintFlowConfig> {
66+ bindingset [ src, sink]
67+ signature string getArgStringSig ( DataFlowLang:: Node src , DataFlowLang:: Node sink ) ;
68+
69+ module FlowTestArgString<
70+ DataFlow:: ConfigSig ValueFlowConfig, DataFlow:: ConfigSig TaintFlowConfig,
71+ getArgStringSig / 2 getArgString>
72+ {
6673 module ValueFlow = DataFlow:: Global< ValueFlowConfig > ;
6774
6875 module TaintFlow = TaintTracking:: Global< TaintFlowConfig > ;
@@ -82,7 +89,7 @@ module InlineFlowTestMake<
8289 exists ( DataFlowLang:: Node src , DataFlowLang:: Node sink | ValueFlow:: flow ( src , sink ) |
8390 hasLocationInfo ( sink , location ) and
8491 element = sink .toString ( ) and
85- value = Impl :: getArgString ( src , sink )
92+ value = getArgString ( src , sink )
8693 )
8794 or
8895 tag = "hasTaintFlow" and
@@ -91,7 +98,7 @@ module InlineFlowTestMake<
9198 |
9299 hasLocationInfo ( sink , location ) and
93100 element = sink .toString ( ) and
94- value = Impl :: getArgString ( src , sink )
101+ value = getArgString ( src , sink )
95102 )
96103 }
97104 }
@@ -105,13 +112,27 @@ module InlineFlowTestMake<
105112 }
106113 }
107114
115+ module FlowTest< DataFlow:: ConfigSig ValueFlowConfig, DataFlow:: ConfigSig TaintFlowConfig> {
116+ import FlowTestArgString< ValueFlowConfig , TaintFlowConfig , Impl:: getArgString / 2 >
117+ }
118+
108119 module DefaultFlowTest = FlowTest< DefaultFlowConfig , DefaultFlowConfig > ;
109120
121+ module ValueFlowTestArgString< DataFlow:: ConfigSig ValueFlowConfig, getArgStringSig / 2 getArgString>
122+ {
123+ import FlowTestArgString< ValueFlowConfig , NoFlowConfig , getArgString / 2 >
124+ }
125+
110126 module ValueFlowTest< DataFlow:: ConfigSig ValueFlowConfig> {
111- import FlowTest< ValueFlowConfig , NoFlowConfig >
127+ import ValueFlowTestArgString< ValueFlowConfig , Impl:: getArgString / 2 >
128+ }
129+
130+ module TaintFlowTestArgString< DataFlow:: ConfigSig TaintFlowConfig, getArgStringSig / 2 getArgString>
131+ {
132+ import FlowTestArgString< NoFlowConfig , TaintFlowConfig , getArgString / 2 >
112133 }
113134
114135 module TaintFlowTest< DataFlow:: ConfigSig TaintFlowConfig> {
115- import FlowTest < NoFlowConfig , TaintFlowConfig >
136+ import TaintFlowTestArgString < TaintFlowConfig , Impl :: getArgString / 2 >
116137 }
117138}
0 commit comments