diff --git a/rust/ql/lib/utils/test/InlineFlowTest.qll b/rust/ql/lib/utils/test/InlineFlowTest.qll index aad06087d28..704172b95bd 100644 --- a/rust/ql/lib/utils/test/InlineFlowTest.qll +++ b/rust/ql/lib/utils/test/InlineFlowTest.qll @@ -19,7 +19,7 @@ private import internal.InlineExpectationsTestImpl as InlineExpectationsTestImpl */ bindingset[name] private predicate callTargetName(CallExpr call, string name) { - call.getFunction().(PathExpr).toString().matches(name + "%") + call.getFunction().(PathExpr).getPath().getText().matches(name + "%") } private module FlowTestImpl implements InputSig { diff --git a/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected b/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected index fc5d67fa732..c4f606f007d 100644 --- a/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected +++ b/rust/ql/test/library-tests/dataflow/taint/inline-taint-flow.expected @@ -132,20 +132,35 @@ edges | main.rs:175:21:175:29 | source(...) | main.rs:175:5:175:5 | [post] a | provenance | MaD:19 | | main.rs:178:10:178:18 | source(...) | main.rs:178:10:178:24 | ... .neg() | provenance | MaD:9 | | main.rs:179:10:179:18 | source(...) | main.rs:179:10:179:24 | ... .not() | provenance | MaD:20 | +| main.rs:199:13:199:17 | mut a [Wrapping] | main.rs:201:21:201:21 | a [Wrapping] | provenance | | +| main.rs:199:13:199:17 | mut a [Wrapping] | main.rs:206:21:206:21 | a [Wrapping] | provenance | | +| main.rs:199:36:199:61 | Wrapping(...) [Wrapping] | main.rs:199:13:199:17 | mut a [Wrapping] | provenance | | +| main.rs:199:45:199:60 | ...::source(...) | main.rs:199:36:199:61 | Wrapping(...) [Wrapping] | provenance | | +| main.rs:201:21:201:21 | a [Wrapping] | main.rs:201:21:201:23 | a.0 | provenance | | | main.rs:203:9:203:9 | [post] a | main.rs:204:9:204:9 | a | provenance | | | main.rs:203:9:203:9 | [post] a | main.rs:205:14:205:14 | a | provenance | | +| main.rs:203:9:203:9 | [post] a | main.rs:206:21:206:23 | a.0 | provenance | | | main.rs:203:22:203:30 | source(...) | main.rs:203:9:203:9 | [post] a | provenance | MaD:3 | | main.rs:203:22:203:30 | source(...) | main.rs:203:9:203:9 | [post] a | provenance | MaD:4 | | main.rs:204:9:204:9 | [post] a | main.rs:205:14:205:14 | a | provenance | | +| main.rs:204:9:204:9 | [post] a | main.rs:206:21:206:23 | a.0 | provenance | | | main.rs:204:9:204:9 | a | main.rs:204:9:204:9 | [post] a | provenance | MaD:4 | +| main.rs:206:21:206:21 | a [Wrapping] | main.rs:206:21:206:23 | a.0 | provenance | | | main.rs:208:9:208:9 | a | main.rs:209:9:209:9 | a | provenance | | | main.rs:208:13:208:21 | source(...) | main.rs:208:9:208:9 | a | provenance | | | main.rs:209:9:209:9 | a | main.rs:210:9:210:9 | a | provenance | MaD:4 | | main.rs:209:14:209:22 | source(...) | main.rs:210:9:210:9 | a | provenance | MaD:3 | | main.rs:209:14:209:22 | source(...) | main.rs:210:9:210:9 | a | provenance | MaD:4 | | main.rs:210:9:210:9 | a | main.rs:211:14:211:14 | a | provenance | MaD:4 | +| main.rs:210:9:210:9 | a | main.rs:212:21:212:23 | a.0 | provenance | MaD:4 | | main.rs:221:15:221:30 | source_usize(...) | main.rs:222:14:222:14 | a | provenance | MaD:23 | | main.rs:221:15:221:30 | source_usize(...) | main.rs:222:14:222:14 | a | provenance | MaD:24 | +| main.rs:221:15:221:30 | source_usize(...) | main.rs:223:21:223:23 | a.0 | provenance | MaD:23 | +| main.rs:221:15:221:30 | source_usize(...) | main.rs:223:21:223:23 | a.0 | provenance | MaD:24 | +| main.rs:241:13:241:14 | v8 | main.rs:242:21:242:24 | v8.0 | provenance | | +| main.rs:241:18:241:37 | ... << ... | main.rs:241:13:241:14 | v8 | provenance | | +| main.rs:241:23:241:37 | source_usize(...) | main.rs:241:18:241:37 | ... << ... | provenance | MaD:21 | +| main.rs:241:23:241:37 | source_usize(...) | main.rs:241:18:241:37 | ... << ... | provenance | MaD:22 | nodes | main.rs:12:9:12:9 | a | semmle.label | a | | main.rs:12:13:12:22 | source(...) | semmle.label | source(...) | @@ -270,19 +285,32 @@ nodes | main.rs:178:10:178:24 | ... .neg() | semmle.label | ... .neg() | | main.rs:179:10:179:18 | source(...) | semmle.label | source(...) | | main.rs:179:10:179:24 | ... .not() | semmle.label | ... .not() | +| main.rs:199:13:199:17 | mut a [Wrapping] | semmle.label | mut a [Wrapping] | +| main.rs:199:36:199:61 | Wrapping(...) [Wrapping] | semmle.label | Wrapping(...) [Wrapping] | +| main.rs:199:45:199:60 | ...::source(...) | semmle.label | ...::source(...) | +| main.rs:201:21:201:21 | a [Wrapping] | semmle.label | a [Wrapping] | +| main.rs:201:21:201:23 | a.0 | semmle.label | a.0 | | main.rs:203:9:203:9 | [post] a | semmle.label | [post] a | | main.rs:203:22:203:30 | source(...) | semmle.label | source(...) | | main.rs:204:9:204:9 | [post] a | semmle.label | [post] a | | main.rs:204:9:204:9 | a | semmle.label | a | | main.rs:205:14:205:14 | a | semmle.label | a | +| main.rs:206:21:206:21 | a [Wrapping] | semmle.label | a [Wrapping] | +| main.rs:206:21:206:23 | a.0 | semmle.label | a.0 | | main.rs:208:9:208:9 | a | semmle.label | a | | main.rs:208:13:208:21 | source(...) | semmle.label | source(...) | | main.rs:209:9:209:9 | a | semmle.label | a | | main.rs:209:14:209:22 | source(...) | semmle.label | source(...) | | main.rs:210:9:210:9 | a | semmle.label | a | | main.rs:211:14:211:14 | a | semmle.label | a | +| main.rs:212:21:212:23 | a.0 | semmle.label | a.0 | | main.rs:221:15:221:30 | source_usize(...) | semmle.label | source_usize(...) | | main.rs:222:14:222:14 | a | semmle.label | a | +| main.rs:223:21:223:23 | a.0 | semmle.label | a.0 | +| main.rs:241:13:241:14 | v8 | semmle.label | v8 | +| main.rs:241:18:241:37 | ... << ... | semmle.label | ... << ... | +| main.rs:241:23:241:37 | source_usize(...) | semmle.label | source_usize(...) | +| main.rs:242:21:242:24 | v8.0 | semmle.label | v8.0 | subpaths testFailures #select @@ -334,7 +362,14 @@ testFailures | main.rs:176:10:176:10 | a | main.rs:175:21:175:29 | source(...) | main.rs:176:10:176:10 | a | $@ | main.rs:175:21:175:29 | source(...) | source(...) | | main.rs:178:10:178:24 | ... .neg() | main.rs:178:10:178:18 | source(...) | main.rs:178:10:178:24 | ... .neg() | $@ | main.rs:178:10:178:18 | source(...) | source(...) | | main.rs:179:10:179:24 | ... .not() | main.rs:179:10:179:18 | source(...) | main.rs:179:10:179:24 | ... .not() | $@ | main.rs:179:10:179:18 | source(...) | source(...) | +| main.rs:201:21:201:23 | a.0 | main.rs:199:45:199:60 | ...::source(...) | main.rs:201:21:201:23 | a.0 | $@ | main.rs:199:45:199:60 | ...::source(...) | ...::source(...) | | main.rs:205:14:205:14 | a | main.rs:203:22:203:30 | source(...) | main.rs:205:14:205:14 | a | $@ | main.rs:203:22:203:30 | source(...) | source(...) | +| main.rs:206:21:206:23 | a.0 | main.rs:199:45:199:60 | ...::source(...) | main.rs:206:21:206:23 | a.0 | $@ | main.rs:199:45:199:60 | ...::source(...) | ...::source(...) | +| main.rs:206:21:206:23 | a.0 | main.rs:203:22:203:30 | source(...) | main.rs:206:21:206:23 | a.0 | $@ | main.rs:203:22:203:30 | source(...) | source(...) | | main.rs:211:14:211:14 | a | main.rs:208:13:208:21 | source(...) | main.rs:211:14:211:14 | a | $@ | main.rs:208:13:208:21 | source(...) | source(...) | | main.rs:211:14:211:14 | a | main.rs:209:14:209:22 | source(...) | main.rs:211:14:211:14 | a | $@ | main.rs:209:14:209:22 | source(...) | source(...) | +| main.rs:212:21:212:23 | a.0 | main.rs:208:13:208:21 | source(...) | main.rs:212:21:212:23 | a.0 | $@ | main.rs:208:13:208:21 | source(...) | source(...) | +| main.rs:212:21:212:23 | a.0 | main.rs:209:14:209:22 | source(...) | main.rs:212:21:212:23 | a.0 | $@ | main.rs:209:14:209:22 | source(...) | source(...) | | main.rs:222:14:222:14 | a | main.rs:221:15:221:30 | source_usize(...) | main.rs:222:14:222:14 | a | $@ | main.rs:221:15:221:30 | source_usize(...) | source_usize(...) | +| main.rs:223:21:223:23 | a.0 | main.rs:221:15:221:30 | source_usize(...) | main.rs:223:21:223:23 | a.0 | $@ | main.rs:221:15:221:30 | source_usize(...) | source_usize(...) | +| main.rs:242:21:242:24 | v8.0 | main.rs:241:23:241:37 | source_usize(...) | main.rs:242:21:242:24 | v8.0 | $@ | main.rs:241:23:241:37 | source_usize(...) | source_usize(...) | diff --git a/rust/ql/test/library-tests/dataflow/taint/main.rs b/rust/ql/test/library-tests/dataflow/taint/main.rs index 3df882befb5..87634c80072 100644 --- a/rust/ql/test/library-tests/dataflow/taint/main.rs +++ b/rust/ql/test/library-tests/dataflow/taint/main.rs @@ -198,18 +198,18 @@ mod wrapping { pub fn wrapping() { let mut a: Wrapping = Wrapping(crate::source(1)); sink(a); // $ MISSING: hasTaintFlow=1 - crate::sink(a.0); // $ MISSING: hasTaintFlow=1 + crate::sink(a.0); // $ hasValueFlow=1 a.add_assign(source(2)); a.add_assign(Wrapping(crate::source(3))); sink(a); // $ hasTaintFlow=2 MISSING: hasTaintFlow=1 hasTaintFlow=3 - crate::sink(a.0); // $ MISSING: hasTaintFlow=1 hasTaintFlow=2 hasTaintFlow=3 + crate::sink(a.0); // $ hasValueFlow=1 hasTaintFlow=2 MISSING: hasTaintFlow=3 a = source(4); a += source(5); a += std::num::Wrapping(crate::source(6)); sink(a); // $ hasTaintFlow=4 hasTaintFlow=5 MISSING: hasTaintFlow=6 - crate::sink(a.0); // $ MISSING: hasTaintFlow=4 hasTaintFlow=5 hasTaintFlow=6 + crate::sink(a.0); // $ hasTaintFlow=4 hasTaintFlow=5 MISSING: hasTaintFlow=6 a = source(7); a &= source(8); @@ -220,7 +220,7 @@ mod wrapping { a = source(10); a <<= source_usize(11); sink(a); // $ hasTaintFlow=11 MISSING: hasTaintFlow=10 - crate::sink(a.0); // $ MISSING: hasTaintFlow=10 hasTaintFlow=11 + crate::sink(a.0); // $ hasTaintFlow=11 MISSING: hasTaintFlow=10 let b: Wrapping = Wrapping(crate::source(1)); let c: Wrapping = Wrapping(crate::source(2)); @@ -239,7 +239,7 @@ mod wrapping { let v7 = b & c; crate::sink(v7.0); // $ MISSING: hasTaintFlow=1 hasTaintFlow=2 let v8 = b << source_usize(3); - crate::sink(v8.0); // $ MISSING: hasTaintFlow=1 hasTaintFlow=3 + crate::sink(v8.0); // $ hasTaintFlow=3 MISSING: hasTaintFlow=1 } }