Skip to content

Commit 5a24674

Browse files
committed
Rust: Fix variable access overlap
1 parent 3d7b60a commit 5a24674

File tree

5 files changed

+7
-8
lines changed

5 files changed

+7
-8
lines changed

rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,12 @@ module Impl {
460460
VariableAccessCand cand, VariableScope scope, string name, int nestLevel, int ord
461461
) {
462462
name = cand.getName() and
463-
scope = [cand.(VariableScope), getEnclosingScope(cand)] and
463+
(
464+
scope = cand
465+
or
466+
not cand instanceof VariableScope and
467+
scope = getEnclosingScope(cand)
468+
) and
464469
ord = getPreOrderNumbering(scope, cand) and
465470
nestLevel = 0
466471
or

rust/ql/test/library-tests/variables/CONSISTENCY/VariableConsistency.expected

Lines changed: 0 additions & 2 deletions
This file was deleted.

rust/ql/test/library-tests/variables/Ssa.expected

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,6 @@ read
283283
| main.rs:349:16:349:16 | x | main.rs:349:16:349:16 | x | main.rs:352:19:352:19 | x |
284284
| main.rs:354:20:354:20 | x | main.rs:354:20:354:20 | x | main.rs:357:19:357:19 | x |
285285
| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x |
286-
| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:367:20:367:20 | x |
287286
| main.rs:366:18:366:18 | x | main.rs:366:18:366:18 | x | main.rs:367:20:367:20 | x |
288287
| main.rs:373:5:373:6 | a8 | main.rs:373:5:373:6 | a8 | main.rs:379:15:379:16 | a8 |
289288
| main.rs:375:9:375:10 | b3 | main.rs:375:9:375:10 | b3 | main.rs:380:15:380:16 | b3 |
@@ -581,7 +580,6 @@ adjacentReads
581580
| main.rs:334:9:334:9 | x | main.rs:334:9:334:9 | x | main.rs:335:11:335:11 | x | main.rs:343:15:343:15 | x |
582581
| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:350:7:350:7 | x | main.rs:355:7:355:7 | x |
583582
| main.rs:348:9:348:9 | x | main.rs:348:9:348:9 | x | main.rs:355:7:355:7 | x | main.rs:359:19:359:19 | x |
584-
| main.rs:364:9:364:9 | x | main.rs:364:9:364:9 | x | main.rs:365:11:365:11 | x | main.rs:367:20:367:20 | x |
585583
| main.rs:391:13:391:15 | a10 | main.rs:391:13:391:15 | a10 | main.rs:395:15:395:17 | a10 | main.rs:404:9:404:11 | a10 |
586584
| main.rs:392:13:392:14 | b4 | main.rs:392:13:392:14 | b4 | main.rs:396:15:396:16 | b4 | main.rs:405:9:405:10 | b4 |
587585
| main.rs:393:13:393:14 | c2 | main.rs:393:13:393:14 | c2 | main.rs:397:15:397:16 | c2 | main.rs:406:9:406:10 | c2 |

rust/ql/test/library-tests/variables/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ fn match_pattern15() {
364364
let x = Some(0); // x1
365365
match x { // $ read_access=x1
366366
Some(x) // x2
367-
=> x, // $ read_access=x2 $ SPURIOUS: read_access=x1
367+
=> x, // $ read_access=x2
368368
_ => 0
369369
};
370370
}

rust/ql/test/library-tests/variables/variables.expected

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,6 @@ variableAccess
232232
| main.rs:357:19:357:19 | x | main.rs:354:20:354:20 | x |
233233
| main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x |
234234
| main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x |
235-
| main.rs:367:20:367:20 | x | main.rs:364:9:364:9 | x |
236235
| main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x |
237236
| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 |
238237
| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 |
@@ -462,7 +461,6 @@ variableReadAccess
462461
| main.rs:357:19:357:19 | x | main.rs:354:20:354:20 | x |
463462
| main.rs:359:19:359:19 | x | main.rs:348:9:348:9 | x |
464463
| main.rs:365:11:365:11 | x | main.rs:364:9:364:9 | x |
465-
| main.rs:367:20:367:20 | x | main.rs:364:9:364:9 | x |
466464
| main.rs:367:20:367:20 | x | main.rs:366:18:366:18 | x |
467465
| main.rs:379:15:379:16 | a8 | main.rs:373:5:373:6 | a8 |
468466
| main.rs:380:15:380:16 | b3 | main.rs:375:9:375:10 | b3 |

0 commit comments

Comments
 (0)