11
11
use Psalm \Internal \DataFlow \DataFlowNode ;
12
12
use Psalm \Internal \DataFlow \TaintSink ;
13
13
use Psalm \Internal \DataFlow \TaintSource ;
14
+ use Psalm \Internal \Fork \Pool ;
14
15
use Psalm \Issue \TaintedCallable ;
15
16
use Psalm \Issue \TaintedCookie ;
16
17
use Psalm \Issue \TaintedCustom ;
@@ -209,6 +210,10 @@ public function connectSinksAndSources(): void
209
210
ksort ($ this ->specializations );
210
211
ksort ($ this ->forward_edges );
211
212
213
+ $ config = Config::getInstance ();
214
+
215
+ $ project_analyzer = ProjectAnalyzer::getInstance ();
216
+
212
217
// reprocess resolved descendants up to a maximum nesting level of 40
213
218
for ($ i = 0 ; count ($ sinks ) && count ($ sources ) && $ i < 40 ; $ i ++) {
214
219
$ new_sources = [];
@@ -227,6 +232,8 @@ public function connectSinksAndSources(): void
227
232
$ source_taints ,
228
233
$ sinks ,
229
234
$ visited_source_ids ,
235
+ $ config ,
236
+ $ project_analyzer ,
230
237
);
231
238
continue ;
232
239
}
@@ -246,6 +253,8 @@ public function connectSinksAndSources(): void
246
253
$ source_taints ,
247
254
$ sinks ,
248
255
$ visited_source_ids ,
256
+ $ config ,
257
+ $ project_analyzer ,
249
258
);
250
259
} elseif (isset ($ this ->specializations [$ source ->id ])) {
251
260
foreach ($ this ->specializations [$ source ->id ] as $ specialization => $ _ ) {
@@ -264,6 +273,8 @@ public function connectSinksAndSources(): void
264
273
$ source_taints ,
265
274
$ sinks ,
266
275
$ visited_source_ids ,
276
+ $ config ,
277
+ $ project_analyzer ,
267
278
);
268
279
}
269
280
}
@@ -283,6 +294,8 @@ public function connectSinksAndSources(): void
283
294
$ source_taints ,
284
295
$ sinks ,
285
296
$ visited_source_ids ,
297
+ $ config ,
298
+ $ project_analyzer ,
286
299
);
287
300
}
288
301
}
@@ -305,11 +318,9 @@ private function getChildNodes(
305
318
int $ source_taints ,
306
319
array $ sinks ,
307
320
array $ visited_source_ids ,
321
+ Config $ config ,
322
+ ProjectAnalyzer $ project_analyzer ,
308
323
): void {
309
- $ config = Config::getInstance ();
310
-
311
- $ project_analyzer = ProjectAnalyzer::getInstance ();
312
-
313
324
foreach ($ this ->forward_edges [$ generated_source ->id ] as $ to_id => $ path ) {
314
325
if (!isset ($ this ->nodes [$ to_id ])) {
315
326
continue ;
0 commit comments