mirror of
https://github.com/github/codeql.git
synced 2026-03-30 20:28:15 +02:00
Rust: Add test cases for summaries as well.
This commit is contained in:
@@ -36,6 +36,13 @@ class Folder = Impl::Folder;
|
||||
|
||||
module Folder = Impl::Folder;
|
||||
|
||||
/**
|
||||
* Holds if the file identified by `relativePath` should be treated as though it is external
|
||||
* to the target project, even though it is within the source code directory. This is used for
|
||||
* testing.
|
||||
*/
|
||||
extensible predicate additionalExternalFile(string relativePath);
|
||||
|
||||
/** A file. */
|
||||
class File extends Container, Impl::File {
|
||||
/**
|
||||
@@ -44,6 +51,8 @@ class File extends Container, Impl::File {
|
||||
*/
|
||||
predicate fromSource() {
|
||||
exists(ExtractorStep s | s.getAction() = "Extract" and s.getFile() = this)
|
||||
and
|
||||
not additionalExternalFile(this.getRelativePath())
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
30
rust/ql/test/library-tests/dataflow/models/external_file.rs
Normal file
30
rust/ql/test/library-tests/dataflow/models/external_file.rs
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
pub fn generated_source(i: i64) -> i64 {
|
||||
0
|
||||
}
|
||||
|
||||
pub fn neutral_generated_source(i: i64) -> i64 {
|
||||
0
|
||||
}
|
||||
|
||||
pub fn neutral_manual_source(i: i64) -> i64 {
|
||||
0
|
||||
}
|
||||
|
||||
pub fn generated_sink(i: i64) {}
|
||||
|
||||
pub fn neutral_generated_sink(i: i64) {}
|
||||
|
||||
pub fn neutral_manual_sink(i: i64) {}
|
||||
|
||||
pub fn generated_summary(i: i64) -> i64 {
|
||||
0
|
||||
}
|
||||
|
||||
pub fn neutral_generated_summary(i: i64) -> i64 {
|
||||
0
|
||||
}
|
||||
|
||||
pub fn neutral_manual_summary(i: i64) -> i64 {
|
||||
0
|
||||
}
|
||||
@@ -410,28 +410,14 @@ fn test_trait_model<T: Ord>(x: T) {
|
||||
sink(x7);
|
||||
}
|
||||
|
||||
pub fn generated_source(i: i64) -> i64 {
|
||||
0
|
||||
}
|
||||
|
||||
pub fn neutral_generated_source(i: i64) -> i64 {
|
||||
0
|
||||
}
|
||||
|
||||
pub fn neutral_manual_source(i: i64) -> i64 {
|
||||
0
|
||||
}
|
||||
|
||||
pub fn generated_sink(i: i64) {}
|
||||
|
||||
pub fn neutral_generated_sink(i: i64) {}
|
||||
|
||||
pub fn neutral_manual_sink(i: i64) {}
|
||||
mod external_file;
|
||||
use external_file::*;
|
||||
|
||||
fn test_neutrals() {
|
||||
// neutral models should cause corresponding generated models to be ignored.
|
||||
// Thus, the `neutral_generated_source` and `neutral_generated_sink`, which
|
||||
// have both a generated and a neutral model, should not have flow.
|
||||
// Thus the `neutral_generated_source`, `neutral_generated_sink` and
|
||||
// `neutral_generated_summary`, which have both a generated and a neutral
|
||||
// model, should not have flow.
|
||||
|
||||
sink(generated_source(1)); // $ hasValueFlow=1
|
||||
sink(neutral_generated_source(2));
|
||||
@@ -439,6 +425,9 @@ fn test_neutrals() {
|
||||
generated_sink(source(4)); // $ hasValueFlow=4
|
||||
neutral_generated_sink(source(5));
|
||||
neutral_manual_sink(source(6)); // $ hasValueFlow=6
|
||||
sink(generated_summary(source(7))); // $ hasValueFlow=7
|
||||
sink(neutral_generated_summary(source(8))); // $ SPURIOUS: hasValueFlow=8
|
||||
sink(neutral_manual_summary(source(9))); // $ hasValueFlow=9
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
models
|
||||
| 1 | Sink: <main::MyFieldEnum>::sink; Argument[self].Field[main::MyFieldEnum::D::field_d]; test-sink |
|
||||
| 2 | Sink: main::enum_sink; Argument[0].Field[main::MyFieldEnum::C::field_c]; test-sink |
|
||||
| 3 | Sink: main::generated_sink; Argument[0]; test-sink |
|
||||
| 4 | Sink: main::neutral_manual_sink; Argument[0]; test-sink |
|
||||
| 3 | Sink: main::external_file::generated_sink; Argument[0]; test-sink |
|
||||
| 4 | Sink: main::external_file::neutral_manual_sink; Argument[0]; test-sink |
|
||||
| 5 | Sink: main::simple_sink; Argument[0]; test-sink |
|
||||
| 6 | Source: <main::MyFieldEnum>::source; ReturnValue.Field[main::MyFieldEnum::C::field_c]; test-source |
|
||||
| 7 | Source: main::arg_source; Argument[0]; test-source |
|
||||
| 8 | Source: main::enum_source; ReturnValue.Field[main::MyFieldEnum::D::field_d]; test-source |
|
||||
| 9 | Source: main::generated_source; ReturnValue; test-source |
|
||||
| 10 | Source: main::neutral_manual_source; ReturnValue; test-source |
|
||||
| 9 | Source: main::external_file::generated_source; ReturnValue; test-source |
|
||||
| 10 | Source: main::external_file::neutral_manual_source; ReturnValue; test-source |
|
||||
| 11 | Source: main::simple_source; ReturnValue; test-source |
|
||||
| 12 | Source: main::source_into_function::pass_source; Argument[1].Parameter[0]; test-source |
|
||||
| 13 | Summary: <_ as core::cmp::Ord>::max; Argument[self,0]; ReturnValue; value |
|
||||
@@ -17,18 +17,21 @@ models
|
||||
| 16 | Summary: main::apply; Argument[0]; Argument[1].Parameter[0]; value |
|
||||
| 17 | Summary: main::apply; Argument[1].ReturnValue; ReturnValue; value |
|
||||
| 18 | Summary: main::coerce; Argument[0]; ReturnValue; taint |
|
||||
| 19 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value |
|
||||
| 20 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value |
|
||||
| 21 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value |
|
||||
| 22 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value |
|
||||
| 23 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value |
|
||||
| 24 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value |
|
||||
| 25 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value |
|
||||
| 26 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value |
|
||||
| 27 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value |
|
||||
| 28 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value |
|
||||
| 29 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value |
|
||||
| 30 | Summary: main::snd; Argument[1]; ReturnValue; value |
|
||||
| 19 | Summary: main::external_file::generated_summary; Argument[0]; ReturnValue; value |
|
||||
| 20 | Summary: main::external_file::neutral_generated_summary; Argument[0]; ReturnValue; value |
|
||||
| 21 | Summary: main::external_file::neutral_manual_summary; Argument[0]; ReturnValue; value |
|
||||
| 22 | Summary: main::get_array_element; Argument[0].Element; ReturnValue; value |
|
||||
| 23 | Summary: main::get_async_number; Argument[0]; ReturnValue.Future; value |
|
||||
| 24 | Summary: main::get_struct_field; Argument[0].Field[main::MyStruct::field1]; ReturnValue; value |
|
||||
| 25 | Summary: main::get_tuple_element; Argument[0].Field[0]; ReturnValue; value |
|
||||
| 26 | Summary: main::get_var_field; Argument[0].Field[main::MyFieldEnum::C::field_c]; ReturnValue; value |
|
||||
| 27 | Summary: main::get_var_pos; Argument[0].Field[main::MyPosEnum::A(0)]; ReturnValue; value |
|
||||
| 28 | Summary: main::set_array_element; Argument[0]; ReturnValue.Element; value |
|
||||
| 29 | Summary: main::set_struct_field; Argument[0]; ReturnValue.Field[main::MyStruct::field2]; value |
|
||||
| 30 | Summary: main::set_tuple_element; Argument[0]; ReturnValue.Field[1]; value |
|
||||
| 31 | Summary: main::set_var_field; Argument[0]; ReturnValue.Field[main::MyFieldEnum::D::field_d]; value |
|
||||
| 32 | Summary: main::set_var_pos; Argument[0]; ReturnValue.Field[main::MyPosEnum::B(0)]; value |
|
||||
| 33 | Summary: main::snd; Argument[1]; ReturnValue; value |
|
||||
edges
|
||||
| main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | |
|
||||
| main.rs:15:9:15:9 | s | main.rs:16:19:16:19 | s | provenance | |
|
||||
@@ -43,8 +46,8 @@ edges
|
||||
| main.rs:41:9:41:10 | s1 | main.rs:42:17:42:18 | s1 | provenance | |
|
||||
| main.rs:41:14:41:23 | source(...) | main.rs:41:9:41:10 | s1 | provenance | |
|
||||
| main.rs:41:14:41:23 | source(...) | main.rs:41:9:41:10 | s1 | provenance | |
|
||||
| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:30 |
|
||||
| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:30 |
|
||||
| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:33 |
|
||||
| main.rs:42:17:42:18 | s1 | main.rs:42:10:42:19 | snd(...) | provenance | MaD:33 |
|
||||
| main.rs:54:9:54:9 | s | main.rs:55:27:55:27 | s | provenance | |
|
||||
| main.rs:54:9:54:9 | s | main.rs:55:27:55:27 | s | provenance | |
|
||||
| main.rs:54:13:54:21 | source(...) | main.rs:54:9:54:9 | s | provenance | |
|
||||
@@ -55,8 +58,8 @@ edges
|
||||
| main.rs:55:14:55:28 | ...::A(...) [A] | main.rs:55:9:55:10 | e1 [A] | provenance | |
|
||||
| main.rs:55:27:55:27 | s | main.rs:55:14:55:28 | ...::A(...) [A] | provenance | |
|
||||
| main.rs:55:27:55:27 | s | main.rs:55:14:55:28 | ...::A(...) [A] | provenance | |
|
||||
| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:24 |
|
||||
| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:24 |
|
||||
| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:27 |
|
||||
| main.rs:56:22:56:23 | e1 [A] | main.rs:56:10:56:24 | get_var_pos(...) | provenance | MaD:27 |
|
||||
| main.rs:67:9:67:9 | s | main.rs:68:26:68:26 | s | provenance | |
|
||||
| main.rs:67:9:67:9 | s | main.rs:68:26:68:26 | s | provenance | |
|
||||
| main.rs:67:13:67:21 | source(...) | main.rs:67:9:67:9 | s | provenance | |
|
||||
@@ -65,8 +68,8 @@ edges
|
||||
| main.rs:68:9:68:10 | e1 [B] | main.rs:69:11:69:12 | e1 [B] | provenance | |
|
||||
| main.rs:68:14:68:27 | set_var_pos(...) [B] | main.rs:68:9:68:10 | e1 [B] | provenance | |
|
||||
| main.rs:68:14:68:27 | set_var_pos(...) [B] | main.rs:68:9:68:10 | e1 [B] | provenance | |
|
||||
| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:29 |
|
||||
| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:29 |
|
||||
| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:32 |
|
||||
| main.rs:68:26:68:26 | s | main.rs:68:14:68:27 | set_var_pos(...) [B] | provenance | MaD:32 |
|
||||
| main.rs:69:11:69:12 | e1 [B] | main.rs:71:9:71:23 | ...::B(...) [B] | provenance | |
|
||||
| main.rs:69:11:69:12 | e1 [B] | main.rs:71:9:71:23 | ...::B(...) [B] | provenance | |
|
||||
| main.rs:71:9:71:23 | ...::B(...) [B] | main.rs:71:22:71:22 | i | provenance | |
|
||||
@@ -83,8 +86,8 @@ edges
|
||||
| main.rs:87:14:87:42 | ...::C {...} [C] | main.rs:87:9:87:10 | e1 [C] | provenance | |
|
||||
| main.rs:87:40:87:40 | s | main.rs:87:14:87:42 | ...::C {...} [C] | provenance | |
|
||||
| main.rs:87:40:87:40 | s | main.rs:87:14:87:42 | ...::C {...} [C] | provenance | |
|
||||
| main.rs:88:24:88:25 | e1 [C] | main.rs:88:10:88:26 | get_var_field(...) | provenance | MaD:23 |
|
||||
| main.rs:88:24:88:25 | e1 [C] | main.rs:88:10:88:26 | get_var_field(...) | provenance | MaD:23 |
|
||||
| main.rs:88:24:88:25 | e1 [C] | main.rs:88:10:88:26 | get_var_field(...) | provenance | MaD:26 |
|
||||
| main.rs:88:24:88:25 | e1 [C] | main.rs:88:10:88:26 | get_var_field(...) | provenance | MaD:26 |
|
||||
| main.rs:99:9:99:9 | s | main.rs:100:28:100:28 | s | provenance | |
|
||||
| main.rs:99:9:99:9 | s | main.rs:100:28:100:28 | s | provenance | |
|
||||
| main.rs:99:13:99:21 | source(...) | main.rs:99:9:99:9 | s | provenance | |
|
||||
@@ -93,8 +96,8 @@ edges
|
||||
| main.rs:100:9:100:10 | e1 [D] | main.rs:101:11:101:12 | e1 [D] | provenance | |
|
||||
| main.rs:100:14:100:29 | set_var_field(...) [D] | main.rs:100:9:100:10 | e1 [D] | provenance | |
|
||||
| main.rs:100:14:100:29 | set_var_field(...) [D] | main.rs:100:9:100:10 | e1 [D] | provenance | |
|
||||
| main.rs:100:28:100:28 | s | main.rs:100:14:100:29 | set_var_field(...) [D] | provenance | MaD:28 |
|
||||
| main.rs:100:28:100:28 | s | main.rs:100:14:100:29 | set_var_field(...) [D] | provenance | MaD:28 |
|
||||
| main.rs:100:28:100:28 | s | main.rs:100:14:100:29 | set_var_field(...) [D] | provenance | MaD:31 |
|
||||
| main.rs:100:28:100:28 | s | main.rs:100:14:100:29 | set_var_field(...) [D] | provenance | MaD:31 |
|
||||
| main.rs:101:11:101:12 | e1 [D] | main.rs:103:9:103:37 | ...::D {...} [D] | provenance | |
|
||||
| main.rs:101:11:101:12 | e1 [D] | main.rs:103:9:103:37 | ...::D {...} [D] | provenance | |
|
||||
| main.rs:103:9:103:37 | ...::D {...} [D] | main.rs:103:35:103:35 | i | provenance | |
|
||||
@@ -111,8 +114,8 @@ edges
|
||||
| main.rs:119:21:122:5 | MyStruct {...} [MyStruct.field1] | main.rs:119:9:119:17 | my_struct [MyStruct.field1] | provenance | |
|
||||
| main.rs:120:17:120:17 | s | main.rs:119:21:122:5 | MyStruct {...} [MyStruct.field1] | provenance | |
|
||||
| main.rs:120:17:120:17 | s | main.rs:119:21:122:5 | MyStruct {...} [MyStruct.field1] | provenance | |
|
||||
| main.rs:123:27:123:35 | my_struct [MyStruct.field1] | main.rs:123:10:123:36 | get_struct_field(...) | provenance | MaD:21 |
|
||||
| main.rs:123:27:123:35 | my_struct [MyStruct.field1] | main.rs:123:10:123:36 | get_struct_field(...) | provenance | MaD:21 |
|
||||
| main.rs:123:27:123:35 | my_struct [MyStruct.field1] | main.rs:123:10:123:36 | get_struct_field(...) | provenance | MaD:24 |
|
||||
| main.rs:123:27:123:35 | my_struct [MyStruct.field1] | main.rs:123:10:123:36 | get_struct_field(...) | provenance | MaD:24 |
|
||||
| main.rs:140:9:140:9 | s | main.rs:141:38:141:38 | s | provenance | |
|
||||
| main.rs:140:9:140:9 | s | main.rs:141:38:141:38 | s | provenance | |
|
||||
| main.rs:140:13:140:21 | source(...) | main.rs:140:9:140:9 | s | provenance | |
|
||||
@@ -121,16 +124,16 @@ edges
|
||||
| main.rs:141:9:141:17 | my_struct [MyStruct.field2] | main.rs:143:10:143:18 | my_struct [MyStruct.field2] | provenance | |
|
||||
| main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | main.rs:141:9:141:17 | my_struct [MyStruct.field2] | provenance | |
|
||||
| main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | main.rs:141:9:141:17 | my_struct [MyStruct.field2] | provenance | |
|
||||
| main.rs:141:38:141:38 | s | main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:26 |
|
||||
| main.rs:141:38:141:38 | s | main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:26 |
|
||||
| main.rs:141:38:141:38 | s | main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:29 |
|
||||
| main.rs:141:38:141:38 | s | main.rs:141:21:141:39 | set_struct_field(...) [MyStruct.field2] | provenance | MaD:29 |
|
||||
| main.rs:143:10:143:18 | my_struct [MyStruct.field2] | main.rs:143:10:143:25 | my_struct.field2 | provenance | |
|
||||
| main.rs:143:10:143:18 | my_struct [MyStruct.field2] | main.rs:143:10:143:25 | my_struct.field2 | provenance | |
|
||||
| main.rs:152:9:152:9 | s | main.rs:153:29:153:29 | s | provenance | |
|
||||
| main.rs:152:9:152:9 | s | main.rs:153:29:153:29 | s | provenance | |
|
||||
| main.rs:152:13:152:21 | source(...) | main.rs:152:9:152:9 | s | provenance | |
|
||||
| main.rs:152:13:152:21 | source(...) | main.rs:152:9:152:9 | s | provenance | |
|
||||
| main.rs:153:28:153:30 | [...] [element] | main.rs:153:10:153:31 | get_array_element(...) | provenance | MaD:19 |
|
||||
| main.rs:153:28:153:30 | [...] [element] | main.rs:153:10:153:31 | get_array_element(...) | provenance | MaD:19 |
|
||||
| main.rs:153:28:153:30 | [...] [element] | main.rs:153:10:153:31 | get_array_element(...) | provenance | MaD:22 |
|
||||
| main.rs:153:28:153:30 | [...] [element] | main.rs:153:10:153:31 | get_array_element(...) | provenance | MaD:22 |
|
||||
| main.rs:153:29:153:29 | s | main.rs:153:28:153:30 | [...] [element] | provenance | |
|
||||
| main.rs:153:29:153:29 | s | main.rs:153:28:153:30 | [...] [element] | provenance | |
|
||||
| main.rs:162:9:162:9 | s | main.rs:163:33:163:33 | s | provenance | |
|
||||
@@ -141,8 +144,8 @@ edges
|
||||
| main.rs:163:9:163:11 | arr [element] | main.rs:164:10:164:12 | arr [element] | provenance | |
|
||||
| main.rs:163:15:163:34 | set_array_element(...) [element] | main.rs:163:9:163:11 | arr [element] | provenance | |
|
||||
| main.rs:163:15:163:34 | set_array_element(...) [element] | main.rs:163:9:163:11 | arr [element] | provenance | |
|
||||
| main.rs:163:33:163:33 | s | main.rs:163:15:163:34 | set_array_element(...) [element] | provenance | MaD:25 |
|
||||
| main.rs:163:33:163:33 | s | main.rs:163:15:163:34 | set_array_element(...) [element] | provenance | MaD:25 |
|
||||
| main.rs:163:33:163:33 | s | main.rs:163:15:163:34 | set_array_element(...) [element] | provenance | MaD:28 |
|
||||
| main.rs:163:33:163:33 | s | main.rs:163:15:163:34 | set_array_element(...) [element] | provenance | MaD:28 |
|
||||
| main.rs:164:10:164:12 | arr [element] | main.rs:164:10:164:15 | arr[0] | provenance | MaD:15 |
|
||||
| main.rs:164:10:164:12 | arr [element] | main.rs:164:10:164:15 | arr[0] | provenance | MaD:15 |
|
||||
| main.rs:173:9:173:9 | s | main.rs:174:14:174:14 | s | provenance | |
|
||||
@@ -155,8 +158,8 @@ edges
|
||||
| main.rs:174:13:174:18 | TupleExpr [tuple.0] | main.rs:174:9:174:9 | t [tuple.0] | provenance | |
|
||||
| main.rs:174:14:174:14 | s | main.rs:174:13:174:18 | TupleExpr [tuple.0] | provenance | |
|
||||
| main.rs:174:14:174:14 | s | main.rs:174:13:174:18 | TupleExpr [tuple.0] | provenance | |
|
||||
| main.rs:175:28:175:28 | t [tuple.0] | main.rs:175:10:175:29 | get_tuple_element(...) | provenance | MaD:22 |
|
||||
| main.rs:175:28:175:28 | t [tuple.0] | main.rs:175:10:175:29 | get_tuple_element(...) | provenance | MaD:22 |
|
||||
| main.rs:175:28:175:28 | t [tuple.0] | main.rs:175:10:175:29 | get_tuple_element(...) | provenance | MaD:25 |
|
||||
| main.rs:175:28:175:28 | t [tuple.0] | main.rs:175:10:175:29 | get_tuple_element(...) | provenance | MaD:25 |
|
||||
| main.rs:186:9:186:9 | s | main.rs:187:31:187:31 | s | provenance | |
|
||||
| main.rs:186:9:186:9 | s | main.rs:187:31:187:31 | s | provenance | |
|
||||
| main.rs:186:13:186:22 | source(...) | main.rs:186:9:186:9 | s | provenance | |
|
||||
@@ -165,8 +168,8 @@ edges
|
||||
| main.rs:187:9:187:9 | t [tuple.1] | main.rs:189:10:189:10 | t [tuple.1] | provenance | |
|
||||
| main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | main.rs:187:9:187:9 | t [tuple.1] | provenance | |
|
||||
| main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | main.rs:187:9:187:9 | t [tuple.1] | provenance | |
|
||||
| main.rs:187:31:187:31 | s | main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:27 |
|
||||
| main.rs:187:31:187:31 | s | main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:27 |
|
||||
| main.rs:187:31:187:31 | s | main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:30 |
|
||||
| main.rs:187:31:187:31 | s | main.rs:187:13:187:32 | set_tuple_element(...) [tuple.1] | provenance | MaD:30 |
|
||||
| main.rs:189:10:189:10 | t [tuple.1] | main.rs:189:10:189:12 | t.1 | provenance | |
|
||||
| main.rs:189:10:189:10 | t [tuple.1] | main.rs:189:10:189:12 | t.1 | provenance | |
|
||||
| main.rs:201:9:201:9 | s | main.rs:206:11:206:11 | s | provenance | |
|
||||
@@ -217,8 +220,8 @@ edges
|
||||
| main.rs:230:13:230:31 | get_async_number(...) [future] | main.rs:230:13:230:37 | await ... | provenance | |
|
||||
| main.rs:230:13:230:37 | await ... | main.rs:230:9:230:9 | t | provenance | |
|
||||
| main.rs:230:13:230:37 | await ... | main.rs:230:9:230:9 | t | provenance | |
|
||||
| main.rs:230:30:230:30 | s | main.rs:230:13:230:31 | get_async_number(...) [future] | provenance | MaD:20 |
|
||||
| main.rs:230:30:230:30 | s | main.rs:230:13:230:31 | get_async_number(...) [future] | provenance | MaD:20 |
|
||||
| main.rs:230:30:230:30 | s | main.rs:230:13:230:31 | get_async_number(...) [future] | provenance | MaD:23 |
|
||||
| main.rs:230:30:230:30 | s | main.rs:230:13:230:31 | get_async_number(...) [future] | provenance | MaD:23 |
|
||||
| main.rs:250:9:250:9 | s [D] | main.rs:251:11:251:11 | s [D] | provenance | |
|
||||
| main.rs:250:9:250:9 | s [D] | main.rs:251:11:251:11 | s [D] | provenance | |
|
||||
| main.rs:250:13:250:23 | enum_source | main.rs:250:13:250:27 | enum_source(...) [D] | provenance | Src:MaD:8 |
|
||||
@@ -323,14 +326,20 @@ edges
|
||||
| main.rs:406:9:406:10 | x6 | main.rs:407:10:407:11 | x6 | provenance | |
|
||||
| main.rs:406:14:406:23 | source(...) | main.rs:406:14:406:27 | ... < ... | provenance | MaD:14 |
|
||||
| main.rs:406:14:406:27 | ... < ... | main.rs:406:9:406:10 | x6 | provenance | |
|
||||
| main.rs:436:10:436:25 | generated_source | main.rs:436:10:436:28 | generated_source(...) | provenance | Src:MaD:9 MaD:9 |
|
||||
| main.rs:436:10:436:25 | generated_source | main.rs:436:10:436:28 | generated_source(...) | provenance | Src:MaD:9 MaD:9 |
|
||||
| main.rs:438:10:438:30 | neutral_manual_source | main.rs:438:10:438:33 | neutral_manual_source(...) | provenance | Src:MaD:10 MaD:10 |
|
||||
| main.rs:438:10:438:30 | neutral_manual_source | main.rs:438:10:438:33 | neutral_manual_source(...) | provenance | Src:MaD:10 MaD:10 |
|
||||
| main.rs:439:20:439:28 | source(...) | main.rs:439:5:439:18 | generated_sink | provenance | MaD:3 Sink:MaD:3 |
|
||||
| main.rs:439:20:439:28 | source(...) | main.rs:439:5:439:18 | generated_sink | provenance | MaD:3 Sink:MaD:3 |
|
||||
| main.rs:441:25:441:33 | source(...) | main.rs:441:5:441:23 | neutral_manual_sink | provenance | MaD:4 Sink:MaD:4 |
|
||||
| main.rs:441:25:441:33 | source(...) | main.rs:441:5:441:23 | neutral_manual_sink | provenance | MaD:4 Sink:MaD:4 |
|
||||
| main.rs:422:10:422:25 | generated_source | main.rs:422:10:422:28 | generated_source(...) | provenance | Src:MaD:9 MaD:9 |
|
||||
| main.rs:422:10:422:25 | generated_source | main.rs:422:10:422:28 | generated_source(...) | provenance | Src:MaD:9 MaD:9 |
|
||||
| main.rs:424:10:424:30 | neutral_manual_source | main.rs:424:10:424:33 | neutral_manual_source(...) | provenance | Src:MaD:10 MaD:10 |
|
||||
| main.rs:424:10:424:30 | neutral_manual_source | main.rs:424:10:424:33 | neutral_manual_source(...) | provenance | Src:MaD:10 MaD:10 |
|
||||
| main.rs:425:20:425:28 | source(...) | main.rs:425:5:425:18 | generated_sink | provenance | MaD:3 Sink:MaD:3 |
|
||||
| main.rs:425:20:425:28 | source(...) | main.rs:425:5:425:18 | generated_sink | provenance | MaD:3 Sink:MaD:3 |
|
||||
| main.rs:427:25:427:33 | source(...) | main.rs:427:5:427:23 | neutral_manual_sink | provenance | MaD:4 Sink:MaD:4 |
|
||||
| main.rs:427:25:427:33 | source(...) | main.rs:427:5:427:23 | neutral_manual_sink | provenance | MaD:4 Sink:MaD:4 |
|
||||
| main.rs:428:28:428:36 | source(...) | main.rs:428:10:428:37 | generated_summary(...) | provenance | MaD:19 |
|
||||
| main.rs:428:28:428:36 | source(...) | main.rs:428:10:428:37 | generated_summary(...) | provenance | MaD:19 |
|
||||
| main.rs:429:36:429:44 | source(...) | main.rs:429:10:429:45 | neutral_generated_summary(...) | provenance | MaD:20 |
|
||||
| main.rs:429:36:429:44 | source(...) | main.rs:429:10:429:45 | neutral_generated_summary(...) | provenance | MaD:20 |
|
||||
| main.rs:430:33:430:41 | source(...) | main.rs:430:10:430:42 | neutral_manual_summary(...) | provenance | MaD:21 |
|
||||
| main.rs:430:33:430:41 | source(...) | main.rs:430:10:430:42 | neutral_manual_summary(...) | provenance | MaD:21 |
|
||||
nodes
|
||||
| main.rs:15:9:15:9 | s | semmle.label | s |
|
||||
| main.rs:15:9:15:9 | s | semmle.label | s |
|
||||
@@ -684,22 +693,34 @@ nodes
|
||||
| main.rs:406:14:406:23 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:406:14:406:27 | ... < ... | semmle.label | ... < ... |
|
||||
| main.rs:407:10:407:11 | x6 | semmle.label | x6 |
|
||||
| main.rs:436:10:436:25 | generated_source | semmle.label | generated_source |
|
||||
| main.rs:436:10:436:25 | generated_source | semmle.label | generated_source |
|
||||
| main.rs:436:10:436:28 | generated_source(...) | semmle.label | generated_source(...) |
|
||||
| main.rs:436:10:436:28 | generated_source(...) | semmle.label | generated_source(...) |
|
||||
| main.rs:438:10:438:30 | neutral_manual_source | semmle.label | neutral_manual_source |
|
||||
| main.rs:438:10:438:30 | neutral_manual_source | semmle.label | neutral_manual_source |
|
||||
| main.rs:438:10:438:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) |
|
||||
| main.rs:438:10:438:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) |
|
||||
| main.rs:439:5:439:18 | generated_sink | semmle.label | generated_sink |
|
||||
| main.rs:439:5:439:18 | generated_sink | semmle.label | generated_sink |
|
||||
| main.rs:439:20:439:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:439:20:439:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:441:5:441:23 | neutral_manual_sink | semmle.label | neutral_manual_sink |
|
||||
| main.rs:441:5:441:23 | neutral_manual_sink | semmle.label | neutral_manual_sink |
|
||||
| main.rs:441:25:441:33 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:441:25:441:33 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:422:10:422:25 | generated_source | semmle.label | generated_source |
|
||||
| main.rs:422:10:422:25 | generated_source | semmle.label | generated_source |
|
||||
| main.rs:422:10:422:28 | generated_source(...) | semmle.label | generated_source(...) |
|
||||
| main.rs:422:10:422:28 | generated_source(...) | semmle.label | generated_source(...) |
|
||||
| main.rs:424:10:424:30 | neutral_manual_source | semmle.label | neutral_manual_source |
|
||||
| main.rs:424:10:424:30 | neutral_manual_source | semmle.label | neutral_manual_source |
|
||||
| main.rs:424:10:424:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) |
|
||||
| main.rs:424:10:424:33 | neutral_manual_source(...) | semmle.label | neutral_manual_source(...) |
|
||||
| main.rs:425:5:425:18 | generated_sink | semmle.label | generated_sink |
|
||||
| main.rs:425:5:425:18 | generated_sink | semmle.label | generated_sink |
|
||||
| main.rs:425:20:425:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:425:20:425:28 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:427:5:427:23 | neutral_manual_sink | semmle.label | neutral_manual_sink |
|
||||
| main.rs:427:5:427:23 | neutral_manual_sink | semmle.label | neutral_manual_sink |
|
||||
| main.rs:427:25:427:33 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:427:25:427:33 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:428:10:428:37 | generated_summary(...) | semmle.label | generated_summary(...) |
|
||||
| main.rs:428:10:428:37 | generated_summary(...) | semmle.label | generated_summary(...) |
|
||||
| main.rs:428:28:428:36 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:428:28:428:36 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:429:10:429:45 | neutral_generated_summary(...) | semmle.label | neutral_generated_summary(...) |
|
||||
| main.rs:429:10:429:45 | neutral_generated_summary(...) | semmle.label | neutral_generated_summary(...) |
|
||||
| main.rs:429:36:429:44 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:429:36:429:44 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:430:10:430:42 | neutral_manual_summary(...) | semmle.label | neutral_manual_summary(...) |
|
||||
| main.rs:430:10:430:42 | neutral_manual_summary(...) | semmle.label | neutral_manual_summary(...) |
|
||||
| main.rs:430:33:430:41 | source(...) | semmle.label | source(...) |
|
||||
| main.rs:430:33:430:41 | source(...) | semmle.label | source(...) |
|
||||
subpaths
|
||||
| main.rs:212:23:212:23 | f [captured s] | main.rs:211:40:211:40 | s | main.rs:211:17:211:42 | if ... {...} else {...} | main.rs:212:13:212:24 | apply(...) |
|
||||
| main.rs:212:23:212:23 | f [captured s] | main.rs:211:40:211:40 | s | main.rs:211:17:211:42 | if ... {...} else {...} | main.rs:212:13:212:24 | apply(...) |
|
||||
@@ -771,11 +792,17 @@ invalidSpecComponent
|
||||
| main.rs:401:10:401:11 | x4 | main.rs:400:14:400:23 | source(...) | main.rs:401:10:401:11 | x4 | $@ | main.rs:400:14:400:23 | source(...) | source(...) |
|
||||
| main.rs:404:10:404:11 | x5 | main.rs:403:14:403:23 | source(...) | main.rs:404:10:404:11 | x5 | $@ | main.rs:403:14:403:23 | source(...) | source(...) |
|
||||
| main.rs:407:10:407:11 | x6 | main.rs:406:14:406:23 | source(...) | main.rs:407:10:407:11 | x6 | $@ | main.rs:406:14:406:23 | source(...) | source(...) |
|
||||
| main.rs:436:10:436:28 | generated_source(...) | main.rs:436:10:436:25 | generated_source | main.rs:436:10:436:28 | generated_source(...) | $@ | main.rs:436:10:436:25 | generated_source | generated_source |
|
||||
| main.rs:436:10:436:28 | generated_source(...) | main.rs:436:10:436:25 | generated_source | main.rs:436:10:436:28 | generated_source(...) | $@ | main.rs:436:10:436:25 | generated_source | generated_source |
|
||||
| main.rs:438:10:438:33 | neutral_manual_source(...) | main.rs:438:10:438:30 | neutral_manual_source | main.rs:438:10:438:33 | neutral_manual_source(...) | $@ | main.rs:438:10:438:30 | neutral_manual_source | neutral_manual_source |
|
||||
| main.rs:438:10:438:33 | neutral_manual_source(...) | main.rs:438:10:438:30 | neutral_manual_source | main.rs:438:10:438:33 | neutral_manual_source(...) | $@ | main.rs:438:10:438:30 | neutral_manual_source | neutral_manual_source |
|
||||
| main.rs:439:5:439:18 | generated_sink | main.rs:439:20:439:28 | source(...) | main.rs:439:5:439:18 | generated_sink | $@ | main.rs:439:20:439:28 | source(...) | source(...) |
|
||||
| main.rs:439:5:439:18 | generated_sink | main.rs:439:20:439:28 | source(...) | main.rs:439:5:439:18 | generated_sink | $@ | main.rs:439:20:439:28 | source(...) | source(...) |
|
||||
| main.rs:441:5:441:23 | neutral_manual_sink | main.rs:441:25:441:33 | source(...) | main.rs:441:5:441:23 | neutral_manual_sink | $@ | main.rs:441:25:441:33 | source(...) | source(...) |
|
||||
| main.rs:441:5:441:23 | neutral_manual_sink | main.rs:441:25:441:33 | source(...) | main.rs:441:5:441:23 | neutral_manual_sink | $@ | main.rs:441:25:441:33 | source(...) | source(...) |
|
||||
| main.rs:422:10:422:28 | generated_source(...) | main.rs:422:10:422:25 | generated_source | main.rs:422:10:422:28 | generated_source(...) | $@ | main.rs:422:10:422:25 | generated_source | generated_source |
|
||||
| main.rs:422:10:422:28 | generated_source(...) | main.rs:422:10:422:25 | generated_source | main.rs:422:10:422:28 | generated_source(...) | $@ | main.rs:422:10:422:25 | generated_source | generated_source |
|
||||
| main.rs:424:10:424:33 | neutral_manual_source(...) | main.rs:424:10:424:30 | neutral_manual_source | main.rs:424:10:424:33 | neutral_manual_source(...) | $@ | main.rs:424:10:424:30 | neutral_manual_source | neutral_manual_source |
|
||||
| main.rs:424:10:424:33 | neutral_manual_source(...) | main.rs:424:10:424:30 | neutral_manual_source | main.rs:424:10:424:33 | neutral_manual_source(...) | $@ | main.rs:424:10:424:30 | neutral_manual_source | neutral_manual_source |
|
||||
| main.rs:425:5:425:18 | generated_sink | main.rs:425:20:425:28 | source(...) | main.rs:425:5:425:18 | generated_sink | $@ | main.rs:425:20:425:28 | source(...) | source(...) |
|
||||
| main.rs:425:5:425:18 | generated_sink | main.rs:425:20:425:28 | source(...) | main.rs:425:5:425:18 | generated_sink | $@ | main.rs:425:20:425:28 | source(...) | source(...) |
|
||||
| main.rs:427:5:427:23 | neutral_manual_sink | main.rs:427:25:427:33 | source(...) | main.rs:427:5:427:23 | neutral_manual_sink | $@ | main.rs:427:25:427:33 | source(...) | source(...) |
|
||||
| main.rs:427:5:427:23 | neutral_manual_sink | main.rs:427:25:427:33 | source(...) | main.rs:427:5:427:23 | neutral_manual_sink | $@ | main.rs:427:25:427:33 | source(...) | source(...) |
|
||||
| main.rs:428:10:428:37 | generated_summary(...) | main.rs:428:28:428:36 | source(...) | main.rs:428:10:428:37 | generated_summary(...) | $@ | main.rs:428:28:428:36 | source(...) | source(...) |
|
||||
| main.rs:428:10:428:37 | generated_summary(...) | main.rs:428:28:428:36 | source(...) | main.rs:428:10:428:37 | generated_summary(...) | $@ | main.rs:428:28:428:36 | source(...) | source(...) |
|
||||
| main.rs:429:10:429:45 | neutral_generated_summary(...) | main.rs:429:36:429:44 | source(...) | main.rs:429:10:429:45 | neutral_generated_summary(...) | $@ | main.rs:429:36:429:44 | source(...) | source(...) |
|
||||
| main.rs:429:10:429:45 | neutral_generated_summary(...) | main.rs:429:36:429:44 | source(...) | main.rs:429:10:429:45 | neutral_generated_summary(...) | $@ | main.rs:429:36:429:44 | source(...) | source(...) |
|
||||
| main.rs:430:10:430:42 | neutral_manual_summary(...) | main.rs:430:33:430:41 | source(...) | main.rs:430:10:430:42 | neutral_manual_summary(...) | $@ | main.rs:430:33:430:41 | source(...) | source(...) |
|
||||
| main.rs:430:10:430:42 | neutral_manual_summary(...) | main.rs:430:33:430:41 | source(...) | main.rs:430:10:430:42 | neutral_manual_summary(...) | $@ | main.rs:430:33:430:41 | source(...) | source(...) |
|
||||
|
||||
@@ -8,9 +8,9 @@ extensions:
|
||||
- ["<main::MyFieldEnum>::source", "ReturnValue.Field[main::MyFieldEnum::C::field_c]", "test-source", "manual"]
|
||||
- ["main::arg_source", "Argument[0]", "test-source", "manual"]
|
||||
- ["main::source_into_function::pass_source", "Argument[1].Parameter[0]", "test-source", "manual"]
|
||||
- ["main::generated_source", "ReturnValue", "test-source", "dfc-generated"] # not actually generated, but we want to test behaviour of generated models here.
|
||||
- ["main::neutral_generated_source", "ReturnValue", "test-source", "dfc-generated"]
|
||||
- ["main::neutral_manual_source", "ReturnValue", "test-source", "manual"]
|
||||
- ["main::external_file::generated_source", "ReturnValue", "test-source", "dfc-generated"] # not actually generated, but we want to test behaviour of generated models here.
|
||||
- ["main::external_file::neutral_generated_source", "ReturnValue", "test-source", "dfc-generated"]
|
||||
- ["main::external_file::neutral_manual_source", "ReturnValue", "test-source", "manual"]
|
||||
- addsTo:
|
||||
pack: codeql/rust-all
|
||||
extensible: sinkModel
|
||||
@@ -18,9 +18,9 @@ extensions:
|
||||
- ["main::simple_sink", "Argument[0]", "test-sink", "manual"]
|
||||
- ["main::enum_sink", "Argument[0].Field[main::MyFieldEnum::C::field_c]", "test-sink", "manual"]
|
||||
- ["<main::MyFieldEnum>::sink", "Argument[self].Field[main::MyFieldEnum::D::field_d]", "test-sink", "manual"]
|
||||
- ["main::generated_sink", "Argument[0]", "test-sink", "dfc-generated"]
|
||||
- ["main::neutral_generated_sink", "Argument[0]", "test-sink", "dfc-generated"]
|
||||
- ["main::neutral_manual_sink", "Argument[0]", "test-sink", "manual"]
|
||||
- ["main::external_file::generated_sink", "Argument[0]", "test-sink", "dfc-generated"]
|
||||
- ["main::external_file::neutral_generated_sink", "Argument[0]", "test-sink", "dfc-generated"]
|
||||
- ["main::external_file::neutral_manual_sink", "Argument[0]", "test-sink", "manual"]
|
||||
- addsTo:
|
||||
pack: codeql/rust-all
|
||||
extensible: summaryModel
|
||||
@@ -45,11 +45,21 @@ extensions:
|
||||
- ["<_ as core::cmp::PartialOrd>::lt", "Argument[self].Reference", "ReturnValue", "taint", "manual"]
|
||||
# Overwrites the generic trait model for i32
|
||||
- ["<core::i32 as core::cmp::PartialOrd>::lt", "Argument[0]", "ReturnValue", "taint", "manual"]
|
||||
- ["main::external_file::generated_summary", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["main::external_file::neutral_generated_summary", "Argument[0]", "ReturnValue", "value", "dfc-generated"]
|
||||
- ["main::external_file::neutral_manual_summary", "Argument[0]", "ReturnValue", "value", "manual"]
|
||||
- addsTo:
|
||||
pack: codeql/rust-all
|
||||
extensible: neutralModel
|
||||
data:
|
||||
- ["main::neutral_generated_source", "source", "manual"]
|
||||
- ["main::neutral_manual_source", "source", "manual"]
|
||||
- ["main::neutral_generated_sink", "sink", "manual"]
|
||||
- ["main::neutral_manual_sink", "sink", "manual"]
|
||||
- ["main::external_file::neutral_generated_source", "source", "manual"]
|
||||
- ["main::external_file::neutral_manual_source", "source", "manual"]
|
||||
- ["main::external_file::neutral_generated_sink", "sink", "manual"]
|
||||
- ["main::external_file::neutral_manual_sink", "sink", "manual"]
|
||||
- ["main::external_file::neutral_generated_summary", "summary", "manual"]
|
||||
- ["main::external_file::neutral_manual_summary", "summary", "manual"]
|
||||
- addsTo:
|
||||
pack: codeql/rust-all
|
||||
extensible: additionalExternalFile
|
||||
data:
|
||||
- ["external_file.rs"]
|
||||
|
||||
Reference in New Issue
Block a user