@@ -83,68 +83,6 @@ module TaintFlowMake<
8383 }
8484 }
8585
86- /**
87- * Constructs a global taint tracking computation.
88- */
89- module Global< DataFlow:: ConfigSig Config> implements DataFlow:: GlobalFlowSig {
90- private module Config0 implements DataFlowInternal:: FullStateConfigSig {
91- import DataFlowInternal:: DefaultState< Config >
92- import Config
93-
94- predicate isAdditionalFlowStep (
95- DataFlowLang:: Node node1 , DataFlowLang:: Node node2 , string model
96- ) {
97- Config:: isAdditionalFlowStep ( node1 , node2 ) and model = "Config"
98- }
99- }
100-
101- private module C implements DataFlowInternal:: FullStateConfigSig {
102- import AddTaintDefaults< Config0 >
103- }
104-
105- private module Stage1 = DataFlowInternalStage1:: ImplStage1< C > ;
106-
107- import Stage1:: PartialFlow
108-
109- private module Flow = DataFlowInternal:: Impl< C , Stage1:: Stage1NoState > ;
110-
111- import Flow
112- }
113-
114- /**
115- * Constructs a global taint tracking computation using flow state.
116- */
117- module GlobalWithState< DataFlow:: StateConfigSig Config> implements DataFlow:: GlobalFlowSig {
118- private module Config0 implements DataFlowInternal:: FullStateConfigSig {
119- import Config
120-
121- predicate isAdditionalFlowStep (
122- DataFlowLang:: Node node1 , DataFlowLang:: Node node2 , string model
123- ) {
124- Config:: isAdditionalFlowStep ( node1 , node2 ) and model = "Config"
125- }
126-
127- predicate isAdditionalFlowStep (
128- DataFlowLang:: Node node1 , FlowState state1 , DataFlowLang:: Node node2 , FlowState state2 ,
129- string model
130- ) {
131- Config:: isAdditionalFlowStep ( node1 , state1 , node2 , state2 ) and model = "Config"
132- }
133- }
134-
135- private module C implements DataFlowInternal:: FullStateConfigSig {
136- import AddTaintDefaults< Config0 >
137- }
138-
139- private module Stage1 = DataFlowInternalStage1:: ImplStage1< C > ;
140-
141- import Stage1:: PartialFlow
142-
143- private module Flow = DataFlowInternal:: Impl< C , Stage1:: Stage1WithState > ;
144-
145- import Flow
146- }
147-
14886 signature int speculationLimitSig ( ) ;
14987
15088 private module AddSpeculativeTaintSteps<
@@ -216,6 +154,68 @@ module TaintFlowMake<
216154 }
217155 }
218156
157+ /**
158+ * Constructs a global taint tracking computation.
159+ */
160+ module Global< DataFlow:: ConfigSig Config> implements DataFlow:: GlobalFlowSig {
161+ private module Config0 implements DataFlowInternal:: FullStateConfigSig {
162+ import DataFlowInternal:: DefaultState< Config >
163+ import Config
164+
165+ predicate isAdditionalFlowStep (
166+ DataFlowLang:: Node node1 , DataFlowLang:: Node node2 , string model
167+ ) {
168+ Config:: isAdditionalFlowStep ( node1 , node2 ) and model = "Config"
169+ }
170+ }
171+
172+ private module C implements DataFlowInternal:: FullStateConfigSig {
173+ import AddTaintDefaults< Config0 >
174+ }
175+
176+ private module Stage1 = DataFlowInternalStage1:: ImplStage1< C > ;
177+
178+ import Stage1:: PartialFlow
179+
180+ private module Flow = DataFlowInternal:: Impl< C , Stage1:: Stage1NoState > ;
181+
182+ import Flow
183+ }
184+
185+ /**
186+ * Constructs a global taint tracking computation using flow state.
187+ */
188+ module GlobalWithState< DataFlow:: StateConfigSig Config> implements DataFlow:: GlobalFlowSig {
189+ private module Config0 implements DataFlowInternal:: FullStateConfigSig {
190+ import Config
191+
192+ predicate isAdditionalFlowStep (
193+ DataFlowLang:: Node node1 , DataFlowLang:: Node node2 , string model
194+ ) {
195+ Config:: isAdditionalFlowStep ( node1 , node2 ) and model = "Config"
196+ }
197+
198+ predicate isAdditionalFlowStep (
199+ DataFlowLang:: Node node1 , FlowState state1 , DataFlowLang:: Node node2 , FlowState state2 ,
200+ string model
201+ ) {
202+ Config:: isAdditionalFlowStep ( node1 , state1 , node2 , state2 ) and model = "Config"
203+ }
204+ }
205+
206+ private module C implements DataFlowInternal:: FullStateConfigSig {
207+ import AddTaintDefaults< Config0 >
208+ }
209+
210+ private module Stage1 = DataFlowInternalStage1:: ImplStage1< C > ;
211+
212+ import Stage1:: PartialFlow
213+
214+ private module Flow = DataFlowInternal:: Impl< C , Stage1:: Stage1WithState > ;
215+
216+ import Flow
217+ }
218+
219219 /**
220220 * Constructs a global taint tracking computation that also allows a given
221221 * maximum number of speculative taint steps.
0 commit comments