@@ -218,7 +218,8 @@ public function connectSinksAndSources(): void
218
218
$ visited_source_ids [$ source ->id ][$ source_taints ] = true ;
219
219
220
220
if (isset ($ this ->forward_edges [$ source ->id ])) {
221
- $ new_sources += $ this ->getChildNodes (
221
+ $ this ->getChildNodes (
222
+ $ new_sources ,
222
223
$ source ,
223
224
$ source_taints ,
224
225
$ sinks ,
@@ -236,7 +237,8 @@ public function connectSinksAndSources(): void
236
237
$ generated_source ->id = $ new_id ;
237
238
$ generated_source ->specialized_calls [$ source ->specialization_key ][$ new_id ] = true ;
238
239
239
- $ new_sources += $ this ->getChildNodes (
240
+ $ this ->getChildNodes (
241
+ $ new_sources ,
240
242
$ generated_source ,
241
243
$ source_taints ,
242
244
$ sinks ,
@@ -253,7 +255,8 @@ public function connectSinksAndSources(): void
253
255
$ new_source ->id = $ new_id ;
254
256
unset($ new_source ->specialized_calls [$ specialization ]);
255
257
256
- $ new_sources += $ this ->getChildNodes (
258
+ $ this ->getChildNodes (
259
+ $ new_sources ,
257
260
$ new_source ,
258
261
$ source_taints ,
259
262
$ sinks ,
@@ -271,7 +274,8 @@ public function connectSinksAndSources(): void
271
274
$ new_source = clone $ source ;
272
275
$ new_source ->id = $ new_id ;
273
276
274
- $ new_sources += $ this ->getChildNodes (
277
+ $ this ->getChildNodes (
278
+ $ new_sources ,
275
279
$ new_source ,
276
280
$ source_taints ,
277
281
$ sinks ,
@@ -283,21 +287,22 @@ public function connectSinksAndSources(): void
283
287
}
284
288
285
289
$ sources = $ new_sources ;
290
+ unset($ new_sources );
286
291
}
287
292
}
288
293
289
294
/**
290
295
* @param array<DataFlowNode> $sinks
291
- * @return array<string, DataFlowNode>
296
+ * @param array<string, DataFlowNode> $new_sources
297
+ * @param-out array<string, DataFlowNode> $new_sources
292
298
*/
293
299
private function getChildNodes (
300
+ array &$ new_sources ,
294
301
DataFlowNode $ generated_source ,
295
302
int $ source_taints ,
296
303
array $ sinks ,
297
304
array $ visited_source_ids ,
298
- ): array {
299
- $ new_sources = [];
300
-
305
+ ): void {
301
306
$ config = Config::getInstance ();
302
307
303
308
$ project_analyzer = ProjectAnalyzer::getInstance ();
@@ -488,7 +493,5 @@ private function getChildNodes(
488
493
' ' . $ new_destination ->taints ;
489
494
$ new_sources [$ key ] = $ new_destination ;
490
495
}
491
-
492
- return $ new_sources ;
493
496
}
494
497
}
0 commit comments