@@ -35,6 +35,7 @@ signature module InputSig<DF::InputSig DataFlowLang> {
35
35
36
36
predicate defaultSink ( DataFlowLang:: Node source ) ;
37
37
38
+ bindingset [ src, sink]
38
39
string getArgString ( DataFlowLang:: Node src , DataFlowLang:: Node sink ) ;
39
40
}
40
41
@@ -62,7 +63,13 @@ module InlineFlowTestMake<
62
63
predicate isSink ( DataFlowLang:: Node sink ) { none ( ) }
63
64
}
64
65
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
+ {
66
73
module ValueFlow = DataFlow:: Global< ValueFlowConfig > ;
67
74
68
75
module TaintFlow = TaintTracking:: Global< TaintFlowConfig > ;
@@ -82,7 +89,7 @@ module InlineFlowTestMake<
82
89
exists ( DataFlowLang:: Node src , DataFlowLang:: Node sink | ValueFlow:: flow ( src , sink ) |
83
90
hasLocationInfo ( sink , location ) and
84
91
element = sink .toString ( ) and
85
- value = Impl :: getArgString ( src , sink )
92
+ value = getArgString ( src , sink )
86
93
)
87
94
or
88
95
tag = "hasTaintFlow" and
@@ -91,7 +98,7 @@ module InlineFlowTestMake<
91
98
|
92
99
hasLocationInfo ( sink , location ) and
93
100
element = sink .toString ( ) and
94
- value = Impl :: getArgString ( src , sink )
101
+ value = getArgString ( src , sink )
95
102
)
96
103
}
97
104
}
@@ -105,12 +112,26 @@ module InlineFlowTestMake<
105
112
}
106
113
}
107
114
115
+ module FlowTest< DataFlow:: ConfigSig ValueFlowConfig, DataFlow:: ConfigSig TaintFlowConfig> {
116
+ import FlowTestArgString< ValueFlowConfig , TaintFlowConfig , Impl:: getArgString / 2 >
117
+ }
118
+
108
119
module DefaultFlowTest = FlowTest< DefaultFlowConfig , DefaultFlowConfig > ;
109
120
121
+ module ValueFlowTestArgString< DataFlow:: ConfigSig ValueFlowConfig, getArgStringSig / 2 getArgString>
122
+ {
123
+ import FlowTestArgString< ValueFlowConfig , NoFlowConfig , getArgString / 2 >
124
+ }
125
+
110
126
module ValueFlowTest< DataFlow:: ConfigSig ValueFlowConfig> {
111
127
import FlowTest< ValueFlowConfig , NoFlowConfig >
112
128
}
113
129
130
+ module TaintFlowTestArgString< DataFlow:: ConfigSig TaintFlowConfig, getArgStringSig / 2 getArgString>
131
+ {
132
+ import FlowTestArgString< NoFlowConfig , TaintFlowConfig , getArgString / 2 >
133
+ }
134
+
114
135
module TaintFlowTest< DataFlow:: ConfigSig TaintFlowConfig> {
115
136
import FlowTest< NoFlowConfig , TaintFlowConfig >
116
137
}
0 commit comments