Skip to content

Commit 1682460

Browse files
committed
Rust: Extend tests based on cases found in DCA.
1 parent b29deed commit 1682460

File tree

2 files changed

+41
-17
lines changed

2 files changed

+41
-17
lines changed

rust/ql/test/query-tests/security/CWE-825/AccessAfterLifetime.expected

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
| lifetime.rs:667:14:667:17 | ref1 | lifetime.rs:654:31:654:35 | &str1 | lifetime.rs:667:14:667:17 | ref1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:653:8:653:11 | str1 | str1 |
2323
| lifetime.rs:667:14:667:17 | ref1 | lifetime.rs:655:11:655:25 | &raw const str2 | lifetime.rs:667:14:667:17 | ref1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:651:7:651:10 | str2 | str2 |
2424
| lifetime.rs:734:12:734:13 | r1 | lifetime.rs:719:26:719:34 | &... | lifetime.rs:734:12:734:13 | r1 | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:719:19:719:20 | v2 | v2 |
25-
| lifetime.rs:775:10:775:12 | ptr | lifetime.rs:765:9:765:12 | &val | lifetime.rs:775:10:775:12 | ptr | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:763:6:763:8 | val | val |
25+
| lifetime.rs:771:12:771:14 | ptr | lifetime.rs:769:12:769:23 | &val | lifetime.rs:771:12:771:14 | ptr | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:769:12:769:23 | val | val |
26+
| lifetime.rs:791:10:791:12 | ptr | lifetime.rs:781:9:781:12 | &val | lifetime.rs:791:10:791:12 | ptr | Access of a pointer to $@ after its lifetime has ended. | lifetime.rs:779:6:779:8 | val | val |
2627
edges
2728
| deallocation.rs:148:6:148:7 | p1 | deallocation.rs:151:14:151:15 | p1 | provenance | |
2829
| deallocation.rs:148:6:148:7 | p1 | deallocation.rs:158:14:158:15 | p1 | provenance | |
@@ -190,12 +191,15 @@ edges
190191
| lifetime.rs:719:26:719:34 | &... | lifetime.rs:718:7:718:8 | r1 | provenance | |
191192
| lifetime.rs:730:6:730:7 | r1 | lifetime.rs:734:12:734:13 | r1 | provenance | |
192193
| lifetime.rs:730:11:730:25 | e1.test_match() | lifetime.rs:730:6:730:7 | r1 | provenance | |
193-
| lifetime.rs:756:2:756:12 | &val | lifetime.rs:756:2:756:12 | ptr | provenance | |
194-
| lifetime.rs:756:2:756:12 | ptr | lifetime.rs:757:2:757:12 | ptr | provenance | |
195-
| lifetime.rs:765:2:765:12 | return ... | lifetime.rs:769:12:769:24 | get_pointer(...) | provenance | |
196-
| lifetime.rs:765:9:765:12 | &val | lifetime.rs:765:2:765:12 | return ... | provenance | |
197-
| lifetime.rs:769:6:769:8 | ptr | lifetime.rs:775:10:775:12 | ptr | provenance | |
198-
| lifetime.rs:769:12:769:24 | get_pointer(...) | lifetime.rs:769:6:769:8 | ptr | provenance | |
194+
| lifetime.rs:766:2:766:13 | &val | lifetime.rs:766:2:766:13 | ptr | provenance | |
195+
| lifetime.rs:766:2:766:13 | ptr | lifetime.rs:767:2:767:13 | ptr | provenance | |
196+
| lifetime.rs:769:6:769:8 | ptr | lifetime.rs:771:12:771:14 | ptr | provenance | |
197+
| lifetime.rs:769:12:769:23 | &val | lifetime.rs:769:12:769:23 | ptr | provenance | |
198+
| lifetime.rs:769:12:769:23 | ptr | lifetime.rs:769:6:769:8 | ptr | provenance | |
199+
| lifetime.rs:781:2:781:12 | return ... | lifetime.rs:785:12:785:24 | get_pointer(...) | provenance | |
200+
| lifetime.rs:781:9:781:12 | &val | lifetime.rs:781:2:781:12 | return ... | provenance | |
201+
| lifetime.rs:785:6:785:8 | ptr | lifetime.rs:791:10:791:12 | ptr | provenance | |
202+
| lifetime.rs:785:12:785:24 | get_pointer(...) | lifetime.rs:785:6:785:8 | ptr | provenance | |
199203
models
200204
| 1 | Summary: lang:core; crate::ptr::from_ref; Argument[0]; ReturnValue; value |
201205
nodes
@@ -395,12 +399,16 @@ nodes
395399
| lifetime.rs:730:6:730:7 | r1 | semmle.label | r1 |
396400
| lifetime.rs:730:11:730:25 | e1.test_match() | semmle.label | e1.test_match() |
397401
| lifetime.rs:734:12:734:13 | r1 | semmle.label | r1 |
398-
| lifetime.rs:756:2:756:12 | &val | semmle.label | &val |
399-
| lifetime.rs:756:2:756:12 | ptr | semmle.label | ptr |
400-
| lifetime.rs:757:2:757:12 | ptr | semmle.label | ptr |
401-
| lifetime.rs:765:2:765:12 | return ... | semmle.label | return ... |
402-
| lifetime.rs:765:9:765:12 | &val | semmle.label | &val |
402+
| lifetime.rs:766:2:766:13 | &val | semmle.label | &val |
403+
| lifetime.rs:766:2:766:13 | ptr | semmle.label | ptr |
404+
| lifetime.rs:767:2:767:13 | ptr | semmle.label | ptr |
403405
| lifetime.rs:769:6:769:8 | ptr | semmle.label | ptr |
404-
| lifetime.rs:769:12:769:24 | get_pointer(...) | semmle.label | get_pointer(...) |
405-
| lifetime.rs:775:10:775:12 | ptr | semmle.label | ptr |
406+
| lifetime.rs:769:12:769:23 | &val | semmle.label | &val |
407+
| lifetime.rs:769:12:769:23 | ptr | semmle.label | ptr |
408+
| lifetime.rs:771:12:771:14 | ptr | semmle.label | ptr |
409+
| lifetime.rs:781:2:781:12 | return ... | semmle.label | return ... |
410+
| lifetime.rs:781:9:781:12 | &val | semmle.label | &val |
411+
| lifetime.rs:785:6:785:8 | ptr | semmle.label | ptr |
412+
| lifetime.rs:785:12:785:24 | get_pointer(...) | semmle.label | get_pointer(...) |
413+
| lifetime.rs:791:10:791:12 | ptr | semmle.label | ptr |
406414
subpaths

rust/ql/test/query-tests/security/CWE-825/lifetime.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@ pub fn test_enum_members() {
737737

738738
// --- macros ---
739739

740-
macro_rules! my_macro {
740+
macro_rules! my_macro1 {
741741
() => {
742742
let ptr: *const i64;
743743
{
@@ -752,9 +752,25 @@ macro_rules! my_macro {
752752
}
753753
}
754754

755+
macro_rules! my_macro2 {
756+
() => {
757+
{
758+
let val: i64 = 1;
759+
let ptr: *const i64 = &val;
760+
ptr
761+
}
762+
}
763+
}
764+
755765
pub fn test_macros() {
756-
my_macro!();
757-
my_macro!();
766+
my_macro1!();
767+
my_macro1!();
768+
769+
let ptr = my_macro2!(); // $ SPURIOUS: Source[rust/access-after-lifetime-ended]=ptr
770+
unsafe {
771+
let v = *ptr; // $ SPURIOUS: Alert[rust/access-after-lifetime-ended]=ptr
772+
println!(" v = {v}");
773+
}
758774
}
759775

760776
// --- examples from qhelp ---

0 commit comments

Comments
 (0)