Skip to content

Commit ed1fe14

Browse files
committed
Shared: Add more precise types in TypeTracker.
1 parent 27755d1 commit ed1fe14

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

shared/typetracking/codeql/typetracking/TypeTracking.qll

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ module TypeTracking<TypeTrackingInput I> {
344344
}
345345

346346
pragma[nomagic]
347-
private predicate storeStepIntoSource(Node nodeFrom, Node nodeTo, Content f) {
347+
private predicate storeStepIntoSource(Node nodeFrom, LocalSourceNode nodeTo, Content f) {
348348
if hasFeatureBacktrackStoreTarget()
349349
then
350350
exists(Node obj |
@@ -355,7 +355,9 @@ module TypeTracking<TypeTrackingInput I> {
355355
}
356356

357357
pragma[nomagic]
358-
private predicate loadStoreStepIntoSource(Node nodeFrom, Node nodeTo, Content f1, Content f2) {
358+
private predicate loadStoreStepIntoSource(
359+
Node nodeFrom, LocalSourceNode nodeTo, Content f1, Content f2
360+
) {
359361
if hasFeatureBacktrackStoreTarget()
360362
then
361363
exists(Node obj |
@@ -366,7 +368,7 @@ module TypeTracking<TypeTrackingInput I> {
366368
}
367369

368370
pragma[nomagic]
369-
private predicate smallStepNoCall(Node nodeFrom, Node nodeTo, StepSummary summary) {
371+
private predicate smallStepNoCall(Node nodeFrom, LocalSourceNode nodeTo, StepSummary summary) {
370372
levelStepNoCall(nodeFrom, nodeTo) and summary = LevelStep()
371373
or
372374
exists(Content content |
@@ -398,7 +400,7 @@ module TypeTracking<TypeTrackingInput I> {
398400
}
399401

400402
pragma[nomagic]
401-
private predicate smallStepCall(Node nodeFrom, Node nodeTo, StepSummary summary) {
403+
private predicate smallStepCall(Node nodeFrom, LocalSourceNode nodeTo, StepSummary summary) {
402404
levelStepCall(nodeFrom, nodeTo) and summary = LevelStep()
403405
or
404406
callStep(nodeFrom, nodeTo) and summary = CallStep()
@@ -407,32 +409,32 @@ module TypeTracking<TypeTrackingInput I> {
407409
}
408410

409411
pragma[nomagic]
410-
private predicate stepNoCall(Node nodeFrom, Node nodeTo, StepSummary summary) {
412+
private predicate stepNoCall(LocalSourceNode nodeFrom, LocalSourceNode nodeTo, StepSummary summary) {
411413
exists(Node mid | flowsTo(nodeFrom, mid) and smallStepNoCall(mid, nodeTo, summary))
412414
}
413415

414416
pragma[nomagic]
415-
private predicate stepCall(Node nodeFrom, Node nodeTo, StepSummary summary) {
417+
private predicate stepCall(LocalSourceNode nodeFrom, LocalSourceNode nodeTo, StepSummary summary) {
416418
exists(Node mid | flowsTo(nodeFrom, mid) and smallStepCall(mid, nodeTo, summary))
417419
}
418420

419421
pragma[inline]
420-
private predicate smallStepSplit(Node nodeFrom, Node nodeTo, StepSummary summary) {
422+
private predicate smallStepSplit(Node nodeFrom, LocalSourceNode nodeTo, StepSummary summary) {
421423
smallStepCall(nodeFrom, nodeTo, summary) or smallStepNoCall(nodeFrom, nodeTo, summary)
422424
}
423425

424426
pragma[inline]
425-
private predicate stepSplit(Node nodeFrom, Node nodeTo, StepSummary summary) {
427+
private predicate stepSplit(LocalSourceNode nodeFrom, LocalSourceNode nodeTo, StepSummary summary) {
426428
stepNoCall(nodeFrom, nodeTo, summary) or stepCall(nodeFrom, nodeTo, summary)
427429
}
428430

429431
pragma[nomagic]
430-
private predicate smallStep(Node nodeFrom, Node nodeTo, StepSummary summary) {
432+
private predicate smallStep(Node nodeFrom, LocalSourceNode nodeTo, StepSummary summary) {
431433
smallStepSplit(nodeFrom, nodeTo, summary)
432434
}
433435

434436
pragma[nomagic]
435-
private predicate step(Node nodeFrom, Node nodeTo, StepSummary summary) {
437+
private predicate step(LocalSourceNode nodeFrom, LocalSourceNode nodeTo, StepSummary summary) {
436438
stepSplit(nodeFrom, nodeTo, summary)
437439
}
438440

@@ -528,7 +530,7 @@ module TypeTracking<TypeTrackingInput I> {
528530
* heap and/or inter-procedural step from `nodeFrom` to `nodeTo`.
529531
*/
530532
bindingset[nodeFrom, this]
531-
TypeTracker step(Node nodeFrom, Node nodeTo) {
533+
TypeTracker step(LocalSourceNode nodeFrom, LocalSourceNode nodeTo) {
532534
exists(StepSummary summary |
533535
step(pragma[only_bind_out](nodeFrom), _, pragma[only_bind_into](summary)) and
534536
result = pragma[only_bind_into](pragma[only_bind_out](this)).append(summary) and
@@ -655,7 +657,7 @@ module TypeTracking<TypeTrackingInput I> {
655657
* heap and/or inter-procedural step from `nodeTo` to `nodeFrom`.
656658
*/
657659
bindingset[nodeTo, this]
658-
TypeBackTracker step(Node nodeFrom, Node nodeTo) {
660+
TypeBackTracker step(LocalSourceNode nodeFrom, LocalSourceNode nodeTo) {
659661
exists(StepSummary summary |
660662
step(_, pragma[only_bind_out](nodeTo), pragma[only_bind_into](summary)) and
661663
result = pragma[only_bind_into](pragma[only_bind_out](this)).prepend(summary) and

0 commit comments

Comments
 (0)