Add more test cases

This commit is contained in:
Tamas Vajk
2021-02-24 12:29:05 +01:00
parent b05199dccf
commit d05a733109
4 changed files with 505 additions and 187 deletions

View File

@@ -1,31 +1,72 @@
| Tuples.cs:5:13:5:56 | SSA def(x) | Tuples.cs:6:27:6:27 | access to local variable x |
| Tuples.cs:5:13:5:56 | SSA qualifier def(x.Item1) | Tuples.cs:21:14:21:20 | access to field Item1 |
| Tuples.cs:5:13:5:56 | SSA qualifier def(x.Item2) | Tuples.cs:23:14:23:20 | access to field Item2 |
| Tuples.cs:5:13:5:56 | SSA qualifier def(x.Item2.Item1) | Tuples.cs:23:14:23:26 | access to field Item1 |
| Tuples.cs:5:13:5:56 | SSA qualifier def(x.Item2.Item2) | Tuples.cs:24:14:24:26 | access to field Item2 |
| Tuples.cs:5:17:5:56 | (..., ...) | Tuples.cs:5:13:5:56 | SSA def(x) |
| Tuples.cs:6:9:6:27 | SSA def(a) | Tuples.cs:7:14:7:14 | access to local variable a |
| Tuples.cs:6:9:6:27 | SSA def(b) | Tuples.cs:8:14:8:14 | access to local variable b |
| Tuples.cs:6:9:6:27 | SSA def(c) | Tuples.cs:9:14:9:14 | access to local variable c |
| Tuples.cs:6:27:6:27 | access to local variable x | Tuples.cs:6:9:6:23 | (..., ...) |
| Tuples.cs:6:27:6:27 | access to local variable x | Tuples.cs:11:23:11:23 | access to local variable x |
| Tuples.cs:11:9:11:23 | SSA def(a) | Tuples.cs:12:14:12:14 | access to local variable a |
| Tuples.cs:11:9:11:23 | SSA def(b) | Tuples.cs:13:14:13:14 | access to local variable b |
| Tuples.cs:11:9:11:23 | SSA def(c) | Tuples.cs:14:14:14:14 | access to local variable c |
| Tuples.cs:11:23:11:23 | access to local variable x | Tuples.cs:11:9:11:19 | (..., ...) |
| Tuples.cs:11:23:11:23 | access to local variable x | Tuples.cs:16:26:16:26 | access to local variable x |
| Tuples.cs:16:9:16:26 | SSA def(p) | Tuples.cs:17:14:17:14 | access to local variable p |
| Tuples.cs:16:9:16:26 | SSA def(q) | Tuples.cs:18:14:18:14 | access to local variable q |
| Tuples.cs:16:9:16:26 | SSA qualifier def(q.Item1) | Tuples.cs:18:14:18:20 | access to field Item1 |
| Tuples.cs:16:9:16:26 | SSA qualifier def(q.Item2) | Tuples.cs:19:14:19:20 | access to field Item2 |
| Tuples.cs:16:26:16:26 | access to local variable x | Tuples.cs:16:9:16:22 | (..., ...) |
| Tuples.cs:16:26:16:26 | access to local variable x | Tuples.cs:21:14:21:14 | access to local variable x |
| Tuples.cs:18:14:18:14 | access to local variable q | Tuples.cs:19:14:19:14 | access to local variable q |
| Tuples.cs:21:14:21:14 | [post] access to local variable x | Tuples.cs:22:14:22:14 | access to local variable x |
| Tuples.cs:21:14:21:14 | access to local variable x | Tuples.cs:22:14:22:14 | access to local variable x |
| Tuples.cs:21:14:21:20 | [post] access to field Item1 | Tuples.cs:22:14:22:16 | access to field Item1 |
| Tuples.cs:21:14:21:20 | access to field Item1 | Tuples.cs:22:14:22:16 | access to field Item1 |
| Tuples.cs:22:14:22:14 | [post] access to local variable x | Tuples.cs:23:14:23:14 | access to local variable x |
| Tuples.cs:22:14:22:14 | access to local variable x | Tuples.cs:23:14:23:14 | access to local variable x |
| Tuples.cs:7:13:7:56 | SSA def(x) | Tuples.cs:8:27:8:27 | access to local variable x |
| Tuples.cs:7:13:7:56 | SSA qualifier def(x.Item1) | Tuples.cs:23:14:23:20 | access to field Item1 |
| Tuples.cs:7:13:7:56 | SSA qualifier def(x.Item2) | Tuples.cs:25:14:25:20 | access to field Item2 |
| Tuples.cs:7:13:7:56 | SSA qualifier def(x.Item2.Item1) | Tuples.cs:25:14:25:26 | access to field Item1 |
| Tuples.cs:7:13:7:56 | SSA qualifier def(x.Item2.Item2) | Tuples.cs:26:14:26:26 | access to field Item2 |
| Tuples.cs:7:17:7:56 | (..., ...) | Tuples.cs:7:13:7:56 | SSA def(x) |
| Tuples.cs:8:9:8:27 | SSA def(a) | Tuples.cs:9:14:9:14 | access to local variable a |
| Tuples.cs:8:9:8:27 | SSA def(b) | Tuples.cs:10:14:10:14 | access to local variable b |
| Tuples.cs:8:9:8:27 | SSA def(c) | Tuples.cs:11:14:11:14 | access to local variable c |
| Tuples.cs:8:27:8:27 | access to local variable x | Tuples.cs:8:9:8:23 | (..., ...) |
| Tuples.cs:8:27:8:27 | access to local variable x | Tuples.cs:13:23:13:23 | access to local variable x |
| Tuples.cs:13:9:13:23 | SSA def(a) | Tuples.cs:14:14:14:14 | access to local variable a |
| Tuples.cs:13:9:13:23 | SSA def(b) | Tuples.cs:15:14:15:14 | access to local variable b |
| Tuples.cs:13:9:13:23 | SSA def(c) | Tuples.cs:16:14:16:14 | access to local variable c |
| Tuples.cs:13:23:13:23 | access to local variable x | Tuples.cs:13:9:13:19 | (..., ...) |
| Tuples.cs:13:23:13:23 | access to local variable x | Tuples.cs:18:26:18:26 | access to local variable x |
| Tuples.cs:18:9:18:26 | SSA def(p) | Tuples.cs:19:14:19:14 | access to local variable p |
| Tuples.cs:18:9:18:26 | SSA def(q) | Tuples.cs:20:14:20:14 | access to local variable q |
| Tuples.cs:18:9:18:26 | SSA qualifier def(q.Item1) | Tuples.cs:20:14:20:20 | access to field Item1 |
| Tuples.cs:18:9:18:26 | SSA qualifier def(q.Item2) | Tuples.cs:21:14:21:20 | access to field Item2 |
| Tuples.cs:18:26:18:26 | access to local variable x | Tuples.cs:18:9:18:22 | (..., ...) |
| Tuples.cs:18:26:18:26 | access to local variable x | Tuples.cs:23:14:23:14 | access to local variable x |
| Tuples.cs:20:14:20:14 | access to local variable q | Tuples.cs:21:14:21:14 | access to local variable q |
| Tuples.cs:23:14:23:14 | [post] access to local variable x | Tuples.cs:24:14:24:14 | access to local variable x |
| Tuples.cs:23:14:23:14 | access to local variable x | Tuples.cs:24:14:24:14 | access to local variable x |
| Tuples.cs:23:14:23:20 | access to field Item2 | Tuples.cs:24:14:24:20 | access to field Item2 |
| Tuples.cs:23:14:23:20 | [post] access to field Item1 | Tuples.cs:24:14:24:16 | access to field Item1 |
| Tuples.cs:23:14:23:20 | access to field Item1 | Tuples.cs:24:14:24:16 | access to field Item1 |
| Tuples.cs:24:14:24:14 | [post] access to local variable x | Tuples.cs:25:14:25:14 | access to local variable x |
| Tuples.cs:24:14:24:14 | access to local variable x | Tuples.cs:25:14:25:14 | access to local variable x |
| Tuples.cs:25:14:25:14 | access to local variable x | Tuples.cs:26:14:26:14 | access to local variable x |
| Tuples.cs:25:14:25:20 | access to field Item2 | Tuples.cs:26:14:26:20 | access to field Item2 |
| Tuples.cs:31:13:31:72 | SSA def(x) | Tuples.cs:32:14:32:14 | access to local variable x |
| Tuples.cs:31:13:31:72 | SSA qualifier def(x.Item1) | Tuples.cs:32:14:32:20 | access to field Item1 |
| Tuples.cs:31:13:31:72 | SSA qualifier def(x.Item2) | Tuples.cs:33:14:33:20 | access to field Item2 |
| Tuples.cs:31:13:31:72 | SSA qualifier def(x.Item10) | Tuples.cs:34:14:34:21 | access to field Item10 |
| Tuples.cs:31:17:31:72 | (..., ...) | Tuples.cs:31:13:31:72 | SSA def(x) |
| Tuples.cs:32:14:32:14 | [post] access to local variable x | Tuples.cs:33:14:33:14 | access to local variable x |
| Tuples.cs:32:14:32:14 | access to local variable x | Tuples.cs:33:14:33:14 | access to local variable x |
| Tuples.cs:33:14:33:14 | access to local variable x | Tuples.cs:34:14:34:14 | access to local variable x |
| Tuples.cs:39:13:39:68 | SSA def(x) | Tuples.cs:40:14:40:14 | access to local variable x |
| Tuples.cs:39:13:39:68 | SSA qualifier def(x.Item1) | Tuples.cs:40:14:40:20 | access to field Item1 |
| Tuples.cs:39:13:39:68 | SSA qualifier def(x.Item2) | Tuples.cs:41:14:41:20 | access to field Item2 |
| Tuples.cs:39:17:39:68 | (...) ... | Tuples.cs:39:13:39:68 | SSA def(x) |
| Tuples.cs:39:47:39:68 | (..., ...) | Tuples.cs:39:17:39:68 | (...) ... |
| Tuples.cs:40:14:40:14 | [post] access to local variable x | Tuples.cs:41:14:41:14 | access to local variable x |
| Tuples.cs:40:14:40:14 | access to local variable x | Tuples.cs:41:14:41:14 | access to local variable x |
| Tuples.cs:43:13:43:68 | SSA def(y) | Tuples.cs:44:14:44:14 | access to local variable y |
| Tuples.cs:43:13:43:68 | SSA qualifier def(y.Item1) | Tuples.cs:44:14:44:20 | access to field Item1 |
| Tuples.cs:43:13:43:68 | SSA qualifier def(y.Item2) | Tuples.cs:45:14:45:20 | access to field Item2 |
| Tuples.cs:43:17:43:68 | (...) ... | Tuples.cs:43:13:43:68 | SSA def(y) |
| Tuples.cs:43:47:43:68 | (...) ... | Tuples.cs:43:17:43:68 | (...) ... |
| Tuples.cs:43:47:43:68 | (..., ...) | Tuples.cs:43:47:43:68 | (...) ... |
| Tuples.cs:44:14:44:14 | [post] access to local variable y | Tuples.cs:45:14:45:14 | access to local variable y |
| Tuples.cs:44:14:44:14 | access to local variable y | Tuples.cs:45:14:45:14 | access to local variable y |
| Tuples.cs:50:13:50:38 | SSA def(x) | Tuples.cs:51:17:51:17 | access to local variable x |
| Tuples.cs:50:17:50:38 | (..., ...) | Tuples.cs:50:13:50:38 | SSA def(x) |
| Tuples.cs:51:17:51:17 | access to local variable x | Tuples.cs:53:18:53:47 | SSA def(t) |
| Tuples.cs:53:18:53:47 | SSA def(t) | Tuples.cs:53:54:53:54 | access to local variable t |
| Tuples.cs:53:18:53:47 | SSA qualifier def(t.Item2) | Tuples.cs:53:54:53:60 | access to field Item2 |
| Tuples.cs:55:23:55:23 | SSA def(a) | Tuples.cs:56:22:56:22 | access to local variable a |
| Tuples.cs:55:26:55:26 | SSA def(b) | Tuples.cs:57:22:57:22 | access to local variable b |
| Tuples.cs:66:13:66:41 | SSA def(r) | Tuples.cs:67:14:67:14 | access to local variable r |
| Tuples.cs:66:13:66:41 | SSA qualifier def(r.i) | Tuples.cs:67:14:67:16 | access to property i |
| Tuples.cs:66:17:66:41 | object creation of type R1 | Tuples.cs:66:13:66:41 | SSA def(r) |
| Tuples.cs:67:14:67:14 | [post] access to local variable r | Tuples.cs:69:22:69:22 | access to local variable r |
| Tuples.cs:67:14:67:14 | access to local variable r | Tuples.cs:69:22:69:22 | access to local variable r |
| Tuples.cs:69:9:69:22 | SSA def(a) | Tuples.cs:70:14:70:14 | access to local variable a |
| Tuples.cs:69:9:69:22 | SSA def(b) | Tuples.cs:71:14:71:14 | access to local variable b |
| Tuples.cs:69:22:69:22 | access to local variable r | Tuples.cs:69:9:69:18 | (..., ...) |
| Tuples.cs:69:22:69:22 | access to local variable r | Tuples.cs:73:17:73:17 | access to local variable r |
| Tuples.cs:75:23:75:23 | SSA def(x) | Tuples.cs:76:22:76:22 | access to local variable x |
| Tuples.cs:75:26:75:26 | SSA def(y) | Tuples.cs:77:22:77:22 | access to local variable y |

View File

@@ -1,91 +1,274 @@
Tuples.cs:
# 1| [Class] Tuples
# 3| 5: [Method] M1
# 3| -1: [TypeMention] Void
# 4| 4: [BlockStmt] {...}
# 5| 0: [LocalVariableDeclStmt] ... ...;
# 5| 0: [LocalVariableDeclAndInitExpr] (String,(Int32,String)) x = ...
# 5| -1: [TypeMention] (string, (int, string))
# 5| 0: [LocalVariableAccess] access to local variable x
# 5| 1: [TupleExpr] (..., ...)
# 5| 0: [StringLiteral] "taint source"
# 5| 1: [TupleExpr] (..., ...)
# 5| 0: [IntLiteral] 1
# 5| 1: [StringLiteral] "taint source"
# 6| 1: [ExprStmt] ...;
# 6| 0: [AssignExpr] ... = ...
# 6| 0: [TupleExpr] (..., ...)
# 6| 0: [LocalVariableDeclExpr] String a
# 6| 1: [TupleExpr] (..., ...)
# 6| 0: [LocalVariableDeclExpr] Int32 b
# 6| 1: [LocalVariableDeclExpr] String c
# 6| 1: [LocalVariableAccess] access to local variable x
# 7| 2: [ExprStmt] ...;
# 7| 0: [MethodCall] call to method Sink
# 7| 0: [LocalVariableAccess] access to local variable a
# 8| 3: [ExprStmt] ...;
# 8| 0: [MethodCall] call to method Sink
# 8| 0: [LocalVariableAccess] access to local variable b
# 9| 4: [ExprStmt] ...;
# 3| [Class] Tuples
# 5| 5: [Method] M1
# 5| -1: [TypeMention] Void
# 6| 4: [BlockStmt] {...}
# 7| 0: [LocalVariableDeclStmt] ... ...;
# 7| 0: [LocalVariableDeclAndInitExpr] (String,(Int32,String)) x = ...
# 7| -1: [TypeMention] (string, (int, string))
# 7| 0: [LocalVariableAccess] access to local variable x
# 7| 1: [TupleExpr] (..., ...)
# 7| 0: [StringLiteral] "taint source"
# 7| 1: [TupleExpr] (..., ...)
# 7| 0: [IntLiteral] 1
# 7| 1: [StringLiteral] "taint source"
# 8| 1: [ExprStmt] ...;
# 8| 0: [AssignExpr] ... = ...
# 8| 0: [TupleExpr] (..., ...)
# 8| 0: [LocalVariableDeclExpr] String a
# 8| 1: [TupleExpr] (..., ...)
# 8| 0: [LocalVariableDeclExpr] Int32 b
# 8| 1: [LocalVariableDeclExpr] String c
# 8| 1: [LocalVariableAccess] access to local variable x
# 9| 2: [ExprStmt] ...;
# 9| 0: [MethodCall] call to method Sink
# 9| 0: [LocalVariableAccess] access to local variable c
# 11| 5: [ExprStmt] ...;
# 11| 0: [AssignExpr] ... = ...
# 11| 0: [TupleExpr] (..., ...)
# 11| 0: [LocalVariableAccess] access to local variable a
# 11| 1: [TupleExpr] (..., ...)
# 11| 0: [LocalVariableAccess] access to local variable b
# 11| 1: [LocalVariableAccess] access to local variable c
# 11| 1: [LocalVariableAccess] access to local variable x
# 12| 6: [ExprStmt] ...;
# 12| 0: [MethodCall] call to method Sink
# 12| 0: [LocalVariableAccess] access to local variable a
# 13| 7: [ExprStmt] ...;
# 13| 0: [MethodCall] call to method Sink
# 13| 0: [LocalVariableAccess] access to local variable b
# 14| 8: [ExprStmt] ...;
# 9| 0: [LocalVariableAccess] access to local variable a
# 10| 3: [ExprStmt] ...;
# 10| 0: [MethodCall] call to method Sink
# 10| 0: [LocalVariableAccess] access to local variable b
# 11| 4: [ExprStmt] ...;
# 11| 0: [MethodCall] call to method Sink
# 11| 0: [LocalVariableAccess] access to local variable c
# 13| 5: [ExprStmt] ...;
# 13| 0: [AssignExpr] ... = ...
# 13| 0: [TupleExpr] (..., ...)
# 13| 0: [LocalVariableAccess] access to local variable a
# 13| 1: [TupleExpr] (..., ...)
# 13| 0: [LocalVariableAccess] access to local variable b
# 13| 1: [LocalVariableAccess] access to local variable c
# 13| 1: [LocalVariableAccess] access to local variable x
# 14| 6: [ExprStmt] ...;
# 14| 0: [MethodCall] call to method Sink
# 14| 0: [LocalVariableAccess] access to local variable c
# 16| 9: [ExprStmt] ...;
# 16| 0: [AssignExpr] ... = ...
# 16| 0: [TupleExpr] (..., ...)
# 16| 0: [LocalVariableDeclExpr] String p
# 16| 1: [LocalVariableDeclExpr] (Int32,String) q
# 16| 1: [LocalVariableAccess] access to local variable x
# 17| 10: [ExprStmt] ...;
# 17| 0: [MethodCall] call to method Sink
# 17| 0: [LocalVariableAccess] access to local variable p
# 18| 11: [ExprStmt] ...;
# 18| 0: [MethodCall] call to method Sink
# 18| 0: [FieldAccess] access to field Item1
# 18| -1: [LocalVariableAccess] access to local variable q
# 19| 12: [ExprStmt] ...;
# 14| 0: [LocalVariableAccess] access to local variable a
# 15| 7: [ExprStmt] ...;
# 15| 0: [MethodCall] call to method Sink
# 15| 0: [LocalVariableAccess] access to local variable b
# 16| 8: [ExprStmt] ...;
# 16| 0: [MethodCall] call to method Sink
# 16| 0: [LocalVariableAccess] access to local variable c
# 18| 9: [ExprStmt] ...;
# 18| 0: [AssignExpr] ... = ...
# 18| 0: [TupleExpr] (..., ...)
# 18| 0: [LocalVariableDeclExpr] String p
# 18| 1: [LocalVariableDeclExpr] (Int32,String) q
# 18| 1: [LocalVariableAccess] access to local variable x
# 19| 10: [ExprStmt] ...;
# 19| 0: [MethodCall] call to method Sink
# 19| 0: [FieldAccess] access to field Item2
# 19| -1: [LocalVariableAccess] access to local variable q
# 21| 13: [ExprStmt] ...;
# 19| 0: [LocalVariableAccess] access to local variable p
# 20| 11: [ExprStmt] ...;
# 20| 0: [MethodCall] call to method Sink
# 20| 0: [FieldAccess] access to field Item1
# 20| -1: [LocalVariableAccess] access to local variable q
# 21| 12: [ExprStmt] ...;
# 21| 0: [MethodCall] call to method Sink
# 21| 0: [FieldAccess] access to field Item1
# 21| -1: [LocalVariableAccess] access to local variable x
# 22| 14: [ExprStmt] ...;
# 22| 0: [MethodCall] call to method Sink
# 22| 0: [FieldAccess] access to field Item1
# 22| -1: [LocalVariableAccess] access to local variable x
# 23| 15: [ExprStmt] ...;
# 21| 0: [FieldAccess] access to field Item2
# 21| -1: [LocalVariableAccess] access to local variable q
# 23| 13: [ExprStmt] ...;
# 23| 0: [MethodCall] call to method Sink
# 23| 0: [FieldAccess] access to field Item1
# 23| -1: [FieldAccess] access to field Item2
# 23| -1: [LocalVariableAccess] access to local variable x
# 24| 16: [ExprStmt] ...;
# 23| -1: [LocalVariableAccess] access to local variable x
# 24| 14: [ExprStmt] ...;
# 24| 0: [MethodCall] call to method Sink
# 24| 0: [FieldAccess] access to field Item2
# 24| -1: [FieldAccess] access to field Item2
# 24| -1: [LocalVariableAccess] access to local variable x
# 27| 6: [Method] Sink
# 27| -1: [TypeMention] Void
# 24| 0: [FieldAccess] access to field Item1
# 24| -1: [LocalVariableAccess] access to local variable x
# 25| 15: [ExprStmt] ...;
# 25| 0: [MethodCall] call to method Sink
# 25| 0: [FieldAccess] access to field Item1
# 25| -1: [FieldAccess] access to field Item2
# 25| -1: [LocalVariableAccess] access to local variable x
# 26| 16: [ExprStmt] ...;
# 26| 0: [MethodCall] call to method Sink
# 26| 0: [FieldAccess] access to field Item2
# 26| -1: [FieldAccess] access to field Item2
# 26| -1: [LocalVariableAccess] access to local variable x
# 29| 6: [Method] M2
# 29| -1: [TypeMention] Void
# 30| 4: [BlockStmt] {...}
# 31| 0: [LocalVariableDeclStmt] ... ...;
# 31| 0: [LocalVariableDeclAndInitExpr] (String,Int32,Int32,Int32,Int32,Int32,Int32,Int32,Int32,String) x = ...
# 31| -1: [TypeMention] (string, int, int, int, int, int, int, int, int, string)
# 31| 0: [LocalVariableAccess] access to local variable x
# 31| 1: [TupleExpr] (..., ...)
# 31| 0: [StringLiteral] "taint source"
# 31| 1: [IntLiteral] 2
# 31| 2: [IntLiteral] 3
# 31| 3: [IntLiteral] 4
# 31| 4: [IntLiteral] 5
# 31| 5: [IntLiteral] 6
# 31| 6: [IntLiteral] 7
# 31| 7: [IntLiteral] 8
# 31| 8: [IntLiteral] 9
# 31| 9: [StringLiteral] "taint source"
# 32| 1: [ExprStmt] ...;
# 32| 0: [MethodCall] call to method Sink
# 32| 0: [FieldAccess] access to field Item1
# 32| -1: [LocalVariableAccess] access to local variable x
# 33| 2: [ExprStmt] ...;
# 33| 0: [MethodCall] call to method Sink
# 33| 0: [FieldAccess] access to field Item2
# 33| -1: [LocalVariableAccess] access to local variable x
# 34| 3: [ExprStmt] ...;
# 34| 0: [MethodCall] call to method Sink
# 34| 0: [FieldAccess] access to field Item10
# 34| -1: [LocalVariableAccess] access to local variable x
# 37| 7: [Method] M3
# 37| -1: [TypeMention] Void
# 38| 4: [BlockStmt] {...}
# 39| 0: [LocalVariableDeclStmt] ... ...;
# 39| 0: [LocalVariableDeclAndInitExpr] (String,Int32,Int32) x = ...
# 39| -1: [TypeMention] (string, int, int)
# 39| 0: [LocalVariableAccess] access to local variable x
# 39| 1: [CastExpr] (...) ...
# 39| 0: [TypeAccess] access to type (String,Int32,Int32)
# 39| 0: [TypeMention] (string, int, int)
# 39| 1: [TypeMention] string
# 39| 2: [TypeMention] int
# 39| 3: [TypeMention] int
# 39| 1: [TupleExpr] (..., ...)
# 39| 0: [StringLiteral] "taint source"
# 39| 1: [IntLiteral] 2
# 39| 2: [IntLiteral] 3
# 40| 1: [ExprStmt] ...;
# 40| 0: [MethodCall] call to method Sink
# 40| 0: [FieldAccess] access to field Item1
# 40| -1: [LocalVariableAccess] access to local variable x
# 41| 2: [ExprStmt] ...;
# 41| 0: [MethodCall] call to method Sink
# 41| 0: [FieldAccess] access to field Item2
# 41| -1: [LocalVariableAccess] access to local variable x
# 43| 3: [LocalVariableDeclStmt] ... ...;
# 43| 0: [LocalVariableDeclAndInitExpr] (Object,Int32,Int32) y = ...
# 43| -1: [TypeMention] (object, int, int)
# 43| 0: [LocalVariableAccess] access to local variable y
# 43| 1: [CastExpr] (...) ...
# 43| 0: [TypeAccess] access to type (Object,Int32,Int32)
# 43| 0: [TypeMention] (object, int, int)
# 43| 1: [TypeMention] object
# 43| 2: [TypeMention] int
# 43| 3: [TypeMention] int
# 43| 1: [CastExpr] (...) ...
# 43| 1: [TupleExpr] (..., ...)
# 43| 0: [StringLiteral] "taint source"
# 43| 1: [IntLiteral] 2
# 43| 2: [IntLiteral] 3
# 44| 4: [ExprStmt] ...;
# 44| 0: [MethodCall] call to method Sink
# 44| 0: [FieldAccess] access to field Item1
# 44| -1: [LocalVariableAccess] access to local variable y
# 45| 5: [ExprStmt] ...;
# 45| 0: [MethodCall] call to method Sink
# 45| 0: [FieldAccess] access to field Item2
# 45| -1: [LocalVariableAccess] access to local variable y
# 48| 8: [Method] M4
# 48| -1: [TypeMention] Void
# 49| 4: [BlockStmt] {...}
# 50| 0: [LocalVariableDeclStmt] ... ...;
# 50| 0: [LocalVariableDeclAndInitExpr] (String,Int32,Int32) x = ...
# 50| -1: [TypeMention] (string, int, int)
# 50| 0: [LocalVariableAccess] access to local variable x
# 50| 1: [TupleExpr] (..., ...)
# 50| 0: [StringLiteral] "taint source"
# 50| 1: [IntLiteral] 2
# 50| 2: [IntLiteral] 3
# 51| 1: [SwitchStmt] switch (...) {...}
# 51| 0: [LocalVariableAccess] access to local variable x
# 53| 0: [CaseStmt] case ...:
# 53| 0: [VariablePatternExpr] (String,Int32,Int32) t
# 53| 0: [TypeMention] (string, int, int)
# 53| 1: [TypeMention] string
# 53| 2: [TypeMention] int
# 53| 3: [TypeMention] int
# 53| 1: [GTExpr] ... > ...
# 53| 0: [FieldAccess] access to field Item2
# 53| -1: [LocalVariableAccess] access to local variable t
# 53| 1: [IntLiteral] 10
# 54| 1: [BreakStmt] break;
# 55| 2: [CaseStmt] case ...:
# 55| 0: [TupleExpr] (..., ...)
# 55| 0: [LocalVariableDeclExpr] String a
# 55| 1: [LocalVariableDeclExpr] Int32 b
# 55| 2: [DiscardExpr] _
# 56| 3: [ExprStmt] ...;
# 56| 0: [MethodCall] call to method Sink
# 56| 0: [LocalVariableAccess] access to local variable a
# 57| 4: [ExprStmt] ...;
# 57| 0: [MethodCall] call to method Sink
# 57| 0: [LocalVariableAccess] access to local variable b
# 58| 5: [BreakStmt] break;
# 62| 9: [Record] R1
# 62| 12: [NEOperator] !=
#-----| 2: (Parameters)
# 62| 0: [Parameter] r1
# 62| 1: [Parameter] r2
# 62| 13: [EQOperator] ==
#-----| 2: (Parameters)
# 62| 0: [Parameter] r1
# 62| 1: [Parameter] r2
# 62| 14: [Property] EqualityContract
# 62| 3: [Getter] get_EqualityContract
# 62| 15: [InstanceConstructor] R1
#-----| 2: (Parameters)
# 62| 0: [Parameter] i
# 62| -1: [TypeMention] string
# 62| 1: [Parameter] j
# 62| -1: [TypeMention] int
# 62| 16: [Property] i
# 62| 3: [Getter] get_i
# 62| 4: [Setter] set_i
#-----| 2: (Parameters)
# 62| 0: [Parameter] value
# 62| 17: [Property] j
# 62| 3: [Getter] get_j
# 62| 4: [Setter] set_j
#-----| 2: (Parameters)
# 62| 0: [Parameter] value
# 64| 10: [Method] M5
# 64| -1: [TypeMention] Void
# 65| 4: [BlockStmt] {...}
# 66| 0: [LocalVariableDeclStmt] ... ...;
# 66| 0: [LocalVariableDeclAndInitExpr] R1 r = ...
# 66| -1: [TypeMention] R1
# 66| 0: [LocalVariableAccess] access to local variable r
# 66| 1: [ObjectCreation] object creation of type R1
# 66| -1: [TypeMention] R1
# 66| 0: [StringLiteral] "taint source"
# 66| 1: [IntLiteral] 1
# 67| 1: [ExprStmt] ...;
# 67| 0: [MethodCall] call to method Sink
# 67| 0: [PropertyCall] access to property i
# 67| -1: [LocalVariableAccess] access to local variable r
# 69| 2: [ExprStmt] ...;
# 69| 0: [AssignExpr] ... = ...
# 69| 0: [TupleExpr] (..., ...)
# 69| 0: [LocalVariableDeclExpr] String a
# 69| 1: [LocalVariableDeclExpr] Int32 b
# 69| 1: [LocalVariableAccess] access to local variable r
# 70| 3: [ExprStmt] ...;
# 70| 0: [MethodCall] call to method Sink
# 70| 0: [LocalVariableAccess] access to local variable a
# 71| 4: [ExprStmt] ...;
# 71| 0: [MethodCall] call to method Sink
# 71| 0: [LocalVariableAccess] access to local variable b
# 73| 5: [SwitchStmt] switch (...) {...}
# 73| 0: [LocalVariableAccess] access to local variable r
# 75| 0: [CaseStmt] case ...:
# 75| 0: [TupleExpr] (..., ...)
# 75| 0: [LocalVariableDeclExpr] String x
# 75| 1: [LocalVariableDeclExpr] Int32 y
# 76| 1: [ExprStmt] ...;
# 76| 0: [MethodCall] call to method Sink
# 76| 0: [LocalVariableAccess] access to local variable x
# 77| 2: [ExprStmt] ...;
# 77| 0: [MethodCall] call to method Sink
# 77| 0: [LocalVariableAccess] access to local variable y
# 78| 3: [BreakStmt] break;
# 82| 11: [Method] Sink
# 82| -1: [TypeMention] Void
#-----| 1: (Type parameters)
# 27| 0: [TypeParameter] T
# 82| 0: [TypeParameter] T
#-----| 2: (Parameters)
# 27| 0: [Parameter] x
# 27| -1: [TypeMention] T
# 27| 4: [BlockStmt] {...}
# 82| 0: [Parameter] x
# 82| -1: [TypeMention] T
# 82| 4: [BlockStmt] {...}
# 85| [NamespaceDeclaration] namespace ... { ... }
# 87| 1: [Class] IsExternalInit

View File

@@ -1,3 +1,5 @@
using System;
class Tuples
{
static void M1()
@@ -24,5 +26,63 @@ class Tuples
Sink(x.Item2.Item2); // Tainted
}
static void M2()
{
var x = ("taint source", 2, 3, 4, 5, 6, 7, 8, 9, "taint source");
Sink(x.Item1); // Tainted
Sink(x.Item2);
Sink(x.Item10); // Tainted
}
static void M3()
{
var x = (ValueTuple<string, int, int>)("taint source", 2, 3);
Sink(x.Item1); // Tainted
Sink(x.Item2);
var y = (ValueTuple<object, int, int>)("taint source", 2, 3);
Sink(y.Item1); // Tainted, not found
Sink(y.Item2);
}
static void M4()
{
var x = ("taint source", 2, 3);
switch (x)
{
case ValueTuple<string, int, int> t when t.Item2 > 10:
break;
case var (a, b, _):
Sink(a); // Tainted, not found
Sink(b);
break;
}
}
record R1(string i, int j) { };
static void M5()
{
var r = new R1("taint source", 1);
Sink(r.i); // Tainted
var (a, b) = r;
Sink(a); // Tainted, not found
Sink(b);
switch (r)
{
case var (x, y):
Sink(x); // Tainted, not found
Sink(y);
break;
}
}
static void Sink<T>(T x) { }
}
namespace System.Runtime.CompilerServices
{
public class IsExternalInit { }
}

View File

@@ -1,79 +1,113 @@
edges
| Tuples.cs:5:17:5:56 | (..., ...) [Item1] : String | Tuples.cs:6:9:6:23 | (..., ...) [Item1] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item1] : String | Tuples.cs:11:9:11:19 | (..., ...) [Item1] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item1] : String | Tuples.cs:16:9:16:22 | (..., ...) [Item1] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item1] : String | Tuples.cs:21:14:21:14 | access to local variable x [Item1] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item1] : String | Tuples.cs:22:14:22:14 | access to local variable x [Item1] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:5:37:5:55 | (..., ...) [Item2] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:6:9:6:23 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:11:9:11:19 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:16:9:16:22 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:24:14:24:14 | access to local variable x [Item2, Item2] : String |
| Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:5:17:5:56 | (..., ...) [Item1] : String |
| Tuples.cs:5:37:5:55 | (..., ...) [Item2] : String | Tuples.cs:5:17:5:56 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:5:41:5:54 | "taint source" : String | Tuples.cs:5:37:5:55 | (..., ...) [Item2] : String |
| Tuples.cs:6:9:6:23 | (..., ...) [Item1] : String | Tuples.cs:6:9:6:27 | SSA def(a) : String |
| Tuples.cs:6:9:6:23 | (..., ...) [Item2, Item2] : String | Tuples.cs:6:9:6:23 | (..., ...) [Item2] : String |
| Tuples.cs:6:9:6:23 | (..., ...) [Item2] : String | Tuples.cs:6:9:6:23 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:6:9:6:23 | (..., ...) [Item2] : String | Tuples.cs:6:9:6:27 | SSA def(c) : String |
| Tuples.cs:6:9:6:27 | SSA def(a) : String | Tuples.cs:7:14:7:14 | access to local variable a |
| Tuples.cs:6:9:6:27 | SSA def(c) : String | Tuples.cs:9:14:9:14 | access to local variable c |
| Tuples.cs:11:9:11:19 | (..., ...) [Item1] : String | Tuples.cs:11:9:11:23 | SSA def(a) : String |
| Tuples.cs:11:9:11:19 | (..., ...) [Item2, Item2] : String | Tuples.cs:11:13:11:18 | (..., ...) [Item2] : String |
| Tuples.cs:11:9:11:23 | SSA def(a) : String | Tuples.cs:12:14:12:14 | access to local variable a |
| Tuples.cs:11:9:11:23 | SSA def(c) : String | Tuples.cs:14:14:14:14 | access to local variable c |
| Tuples.cs:11:13:11:18 | (..., ...) [Item2] : String | Tuples.cs:11:9:11:19 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:11:13:11:18 | (..., ...) [Item2] : String | Tuples.cs:11:9:11:23 | SSA def(c) : String |
| Tuples.cs:16:9:16:22 | (..., ...) [Item1] : String | Tuples.cs:16:9:16:26 | SSA def(p) : String |
| Tuples.cs:16:9:16:22 | (..., ...) [Item2, Item2] : String | Tuples.cs:16:9:16:26 | SSA def(q) [Item2] : String |
| Tuples.cs:16:9:16:26 | SSA def(p) : String | Tuples.cs:17:14:17:14 | access to local variable p |
| Tuples.cs:16:9:16:26 | SSA def(q) [Item2] : String | Tuples.cs:19:14:19:14 | access to local variable q [Item2] : String |
| Tuples.cs:19:14:19:14 | access to local variable q [Item2] : String | Tuples.cs:19:14:19:20 | access to field Item2 |
| Tuples.cs:21:14:21:14 | access to local variable x [Item1] : String | Tuples.cs:21:14:21:20 | access to field Item1 |
| Tuples.cs:22:14:22:14 | access to local variable x [Item1] : String | Tuples.cs:22:14:22:16 | access to field Item1 |
| Tuples.cs:24:14:24:14 | access to local variable x [Item2, Item2] : String | Tuples.cs:24:14:24:20 | access to field Item2 [Item2] : String |
| Tuples.cs:24:14:24:20 | access to field Item2 [Item2] : String | Tuples.cs:24:14:24:26 | access to field Item2 |
| Tuples.cs:7:17:7:56 | (..., ...) [Item1] : String | Tuples.cs:8:9:8:23 | (..., ...) [Item1] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item1] : String | Tuples.cs:13:9:13:19 | (..., ...) [Item1] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item1] : String | Tuples.cs:18:9:18:22 | (..., ...) [Item1] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item1] : String | Tuples.cs:23:14:23:14 | access to local variable x [Item1] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item1] : String | Tuples.cs:24:14:24:14 | access to local variable x [Item1] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:7:37:7:55 | (..., ...) [Item2] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:8:9:8:23 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:13:9:13:19 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:18:9:18:22 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item2, Item2] : String | Tuples.cs:26:14:26:14 | access to local variable x [Item2, Item2] : String |
| Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:7:17:7:56 | (..., ...) [Item1] : String |
| Tuples.cs:7:37:7:55 | (..., ...) [Item2] : String | Tuples.cs:7:17:7:56 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:7:41:7:54 | "taint source" : String | Tuples.cs:7:37:7:55 | (..., ...) [Item2] : String |
| Tuples.cs:8:9:8:23 | (..., ...) [Item1] : String | Tuples.cs:8:9:8:27 | SSA def(a) : String |
| Tuples.cs:8:9:8:23 | (..., ...) [Item2, Item2] : String | Tuples.cs:8:9:8:23 | (..., ...) [Item2] : String |
| Tuples.cs:8:9:8:23 | (..., ...) [Item2] : String | Tuples.cs:8:9:8:23 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:8:9:8:23 | (..., ...) [Item2] : String | Tuples.cs:8:9:8:27 | SSA def(c) : String |
| Tuples.cs:8:9:8:27 | SSA def(a) : String | Tuples.cs:9:14:9:14 | access to local variable a |
| Tuples.cs:8:9:8:27 | SSA def(c) : String | Tuples.cs:11:14:11:14 | access to local variable c |
| Tuples.cs:13:9:13:19 | (..., ...) [Item1] : String | Tuples.cs:13:9:13:23 | SSA def(a) : String |
| Tuples.cs:13:9:13:19 | (..., ...) [Item2, Item2] : String | Tuples.cs:13:13:13:18 | (..., ...) [Item2] : String |
| Tuples.cs:13:9:13:23 | SSA def(a) : String | Tuples.cs:14:14:14:14 | access to local variable a |
| Tuples.cs:13:9:13:23 | SSA def(c) : String | Tuples.cs:16:14:16:14 | access to local variable c |
| Tuples.cs:13:13:13:18 | (..., ...) [Item2] : String | Tuples.cs:13:9:13:19 | (..., ...) [Item2, Item2] : String |
| Tuples.cs:13:13:13:18 | (..., ...) [Item2] : String | Tuples.cs:13:9:13:23 | SSA def(c) : String |
| Tuples.cs:18:9:18:22 | (..., ...) [Item1] : String | Tuples.cs:18:9:18:26 | SSA def(p) : String |
| Tuples.cs:18:9:18:22 | (..., ...) [Item2, Item2] : String | Tuples.cs:18:9:18:26 | SSA def(q) [Item2] : String |
| Tuples.cs:18:9:18:26 | SSA def(p) : String | Tuples.cs:19:14:19:14 | access to local variable p |
| Tuples.cs:18:9:18:26 | SSA def(q) [Item2] : String | Tuples.cs:21:14:21:14 | access to local variable q [Item2] : String |
| Tuples.cs:21:14:21:14 | access to local variable q [Item2] : String | Tuples.cs:21:14:21:20 | access to field Item2 |
| Tuples.cs:23:14:23:14 | access to local variable x [Item1] : String | Tuples.cs:23:14:23:20 | access to field Item1 |
| Tuples.cs:24:14:24:14 | access to local variable x [Item1] : String | Tuples.cs:24:14:24:16 | access to field Item1 |
| Tuples.cs:26:14:26:14 | access to local variable x [Item2, Item2] : String | Tuples.cs:26:14:26:20 | access to field Item2 [Item2] : String |
| Tuples.cs:26:14:26:20 | access to field Item2 [Item2] : String | Tuples.cs:26:14:26:26 | access to field Item2 |
| Tuples.cs:31:17:31:72 | (..., ...) [Item1] : String | Tuples.cs:32:14:32:14 | access to local variable x [Item1] : String |
| Tuples.cs:31:17:31:72 | (..., ...) [Item10] : String | Tuples.cs:34:14:34:14 | access to local variable x [Item10] : String |
| Tuples.cs:31:18:31:31 | "taint source" : String | Tuples.cs:31:17:31:72 | (..., ...) [Item1] : String |
| Tuples.cs:31:58:31:71 | "taint source" : String | Tuples.cs:31:17:31:72 | (..., ...) [Item10] : String |
| Tuples.cs:32:14:32:14 | access to local variable x [Item1] : String | Tuples.cs:32:14:32:20 | access to field Item1 |
| Tuples.cs:34:14:34:14 | access to local variable x [Item10] : String | Tuples.cs:34:14:34:21 | access to field Item10 |
| Tuples.cs:39:17:39:68 | (...) ... [Item1] : String | Tuples.cs:40:14:40:14 | access to local variable x [Item1] : String |
| Tuples.cs:39:47:39:68 | (..., ...) [Item1] : String | Tuples.cs:39:17:39:68 | (...) ... [Item1] : String |
| Tuples.cs:39:48:39:61 | "taint source" : String | Tuples.cs:39:47:39:68 | (..., ...) [Item1] : String |
| Tuples.cs:40:14:40:14 | access to local variable x [Item1] : String | Tuples.cs:40:14:40:20 | access to field Item1 |
| Tuples.cs:66:17:66:41 | object creation of type R1 [i] : String | Tuples.cs:67:14:67:14 | access to local variable r [i] : String |
| Tuples.cs:66:24:66:37 | "taint source" : String | Tuples.cs:66:17:66:41 | object creation of type R1 [i] : String |
| Tuples.cs:67:14:67:14 | access to local variable r [i] : String | Tuples.cs:67:14:67:16 | access to property i |
nodes
| Tuples.cs:5:17:5:56 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:5:17:5:56 | (..., ...) [Item2, Item2] : String | semmle.label | (..., ...) [Item2, Item2] : String |
| Tuples.cs:5:21:5:34 | "taint source" : String | semmle.label | "taint source" : String |
| Tuples.cs:5:37:5:55 | (..., ...) [Item2] : String | semmle.label | (..., ...) [Item2] : String |
| Tuples.cs:5:41:5:54 | "taint source" : String | semmle.label | "taint source" : String |
| Tuples.cs:6:9:6:23 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:6:9:6:23 | (..., ...) [Item2, Item2] : String | semmle.label | (..., ...) [Item2, Item2] : String |
| Tuples.cs:6:9:6:23 | (..., ...) [Item2] : String | semmle.label | (..., ...) [Item2] : String |
| Tuples.cs:6:9:6:27 | SSA def(a) : String | semmle.label | SSA def(a) : String |
| Tuples.cs:6:9:6:27 | SSA def(c) : String | semmle.label | SSA def(c) : String |
| Tuples.cs:7:14:7:14 | access to local variable a | semmle.label | access to local variable a |
| Tuples.cs:9:14:9:14 | access to local variable c | semmle.label | access to local variable c |
| Tuples.cs:11:9:11:19 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:11:9:11:19 | (..., ...) [Item2, Item2] : String | semmle.label | (..., ...) [Item2, Item2] : String |
| Tuples.cs:11:9:11:23 | SSA def(a) : String | semmle.label | SSA def(a) : String |
| Tuples.cs:11:9:11:23 | SSA def(c) : String | semmle.label | SSA def(c) : String |
| Tuples.cs:11:13:11:18 | (..., ...) [Item2] : String | semmle.label | (..., ...) [Item2] : String |
| Tuples.cs:12:14:12:14 | access to local variable a | semmle.label | access to local variable a |
| Tuples.cs:14:14:14:14 | access to local variable c | semmle.label | access to local variable c |
| Tuples.cs:16:9:16:22 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:16:9:16:22 | (..., ...) [Item2, Item2] : String | semmle.label | (..., ...) [Item2, Item2] : String |
| Tuples.cs:16:9:16:26 | SSA def(p) : String | semmle.label | SSA def(p) : String |
| Tuples.cs:16:9:16:26 | SSA def(q) [Item2] : String | semmle.label | SSA def(q) [Item2] : String |
| Tuples.cs:17:14:17:14 | access to local variable p | semmle.label | access to local variable p |
| Tuples.cs:19:14:19:14 | access to local variable q [Item2] : String | semmle.label | access to local variable q [Item2] : String |
| Tuples.cs:19:14:19:20 | access to field Item2 | semmle.label | access to field Item2 |
| Tuples.cs:21:14:21:14 | access to local variable x [Item1] : String | semmle.label | access to local variable x [Item1] : String |
| Tuples.cs:21:14:21:20 | access to field Item1 | semmle.label | access to field Item1 |
| Tuples.cs:22:14:22:14 | access to local variable x [Item1] : String | semmle.label | access to local variable x [Item1] : String |
| Tuples.cs:22:14:22:16 | access to field Item1 | semmle.label | access to field Item1 |
| Tuples.cs:24:14:24:14 | access to local variable x [Item2, Item2] : String | semmle.label | access to local variable x [Item2, Item2] : String |
| Tuples.cs:24:14:24:20 | access to field Item2 [Item2] : String | semmle.label | access to field Item2 [Item2] : String |
| Tuples.cs:24:14:24:26 | access to field Item2 | semmle.label | access to field Item2 |
| Tuples.cs:7:17:7:56 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:7:17:7:56 | (..., ...) [Item2, Item2] : String | semmle.label | (..., ...) [Item2, Item2] : String |
| Tuples.cs:7:21:7:34 | "taint source" : String | semmle.label | "taint source" : String |
| Tuples.cs:7:37:7:55 | (..., ...) [Item2] : String | semmle.label | (..., ...) [Item2] : String |
| Tuples.cs:7:41:7:54 | "taint source" : String | semmle.label | "taint source" : String |
| Tuples.cs:8:9:8:23 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:8:9:8:23 | (..., ...) [Item2, Item2] : String | semmle.label | (..., ...) [Item2, Item2] : String |
| Tuples.cs:8:9:8:23 | (..., ...) [Item2] : String | semmle.label | (..., ...) [Item2] : String |
| Tuples.cs:8:9:8:27 | SSA def(a) : String | semmle.label | SSA def(a) : String |
| Tuples.cs:8:9:8:27 | SSA def(c) : String | semmle.label | SSA def(c) : String |
| Tuples.cs:9:14:9:14 | access to local variable a | semmle.label | access to local variable a |
| Tuples.cs:11:14:11:14 | access to local variable c | semmle.label | access to local variable c |
| Tuples.cs:13:9:13:19 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:13:9:13:19 | (..., ...) [Item2, Item2] : String | semmle.label | (..., ...) [Item2, Item2] : String |
| Tuples.cs:13:9:13:23 | SSA def(a) : String | semmle.label | SSA def(a) : String |
| Tuples.cs:13:9:13:23 | SSA def(c) : String | semmle.label | SSA def(c) : String |
| Tuples.cs:13:13:13:18 | (..., ...) [Item2] : String | semmle.label | (..., ...) [Item2] : String |
| Tuples.cs:14:14:14:14 | access to local variable a | semmle.label | access to local variable a |
| Tuples.cs:16:14:16:14 | access to local variable c | semmle.label | access to local variable c |
| Tuples.cs:18:9:18:22 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:18:9:18:22 | (..., ...) [Item2, Item2] : String | semmle.label | (..., ...) [Item2, Item2] : String |
| Tuples.cs:18:9:18:26 | SSA def(p) : String | semmle.label | SSA def(p) : String |
| Tuples.cs:18:9:18:26 | SSA def(q) [Item2] : String | semmle.label | SSA def(q) [Item2] : String |
| Tuples.cs:19:14:19:14 | access to local variable p | semmle.label | access to local variable p |
| Tuples.cs:21:14:21:14 | access to local variable q [Item2] : String | semmle.label | access to local variable q [Item2] : String |
| Tuples.cs:21:14:21:20 | access to field Item2 | semmle.label | access to field Item2 |
| Tuples.cs:23:14:23:14 | access to local variable x [Item1] : String | semmle.label | access to local variable x [Item1] : String |
| Tuples.cs:23:14:23:20 | access to field Item1 | semmle.label | access to field Item1 |
| Tuples.cs:24:14:24:14 | access to local variable x [Item1] : String | semmle.label | access to local variable x [Item1] : String |
| Tuples.cs:24:14:24:16 | access to field Item1 | semmle.label | access to field Item1 |
| Tuples.cs:26:14:26:14 | access to local variable x [Item2, Item2] : String | semmle.label | access to local variable x [Item2, Item2] : String |
| Tuples.cs:26:14:26:20 | access to field Item2 [Item2] : String | semmle.label | access to field Item2 [Item2] : String |
| Tuples.cs:26:14:26:26 | access to field Item2 | semmle.label | access to field Item2 |
| Tuples.cs:31:17:31:72 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:31:17:31:72 | (..., ...) [Item10] : String | semmle.label | (..., ...) [Item10] : String |
| Tuples.cs:31:18:31:31 | "taint source" : String | semmle.label | "taint source" : String |
| Tuples.cs:31:58:31:71 | "taint source" : String | semmle.label | "taint source" : String |
| Tuples.cs:32:14:32:14 | access to local variable x [Item1] : String | semmle.label | access to local variable x [Item1] : String |
| Tuples.cs:32:14:32:20 | access to field Item1 | semmle.label | access to field Item1 |
| Tuples.cs:34:14:34:14 | access to local variable x [Item10] : String | semmle.label | access to local variable x [Item10] : String |
| Tuples.cs:34:14:34:21 | access to field Item10 | semmle.label | access to field Item10 |
| Tuples.cs:39:17:39:68 | (...) ... [Item1] : String | semmle.label | (...) ... [Item1] : String |
| Tuples.cs:39:47:39:68 | (..., ...) [Item1] : String | semmle.label | (..., ...) [Item1] : String |
| Tuples.cs:39:48:39:61 | "taint source" : String | semmle.label | "taint source" : String |
| Tuples.cs:40:14:40:14 | access to local variable x [Item1] : String | semmle.label | access to local variable x [Item1] : String |
| Tuples.cs:40:14:40:20 | access to field Item1 | semmle.label | access to field Item1 |
| Tuples.cs:66:17:66:41 | object creation of type R1 [i] : String | semmle.label | object creation of type R1 [i] : String |
| Tuples.cs:66:24:66:37 | "taint source" : String | semmle.label | "taint source" : String |
| Tuples.cs:67:14:67:14 | access to local variable r [i] : String | semmle.label | access to local variable r [i] : String |
| Tuples.cs:67:14:67:16 | access to property i | semmle.label | access to property i |
#select
| Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:7:14:7:14 | access to local variable a | $@ | Tuples.cs:7:14:7:14 | access to local variable a | access to local variable a |
| Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:12:14:12:14 | access to local variable a | $@ | Tuples.cs:12:14:12:14 | access to local variable a | access to local variable a |
| Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:17:14:17:14 | access to local variable p | $@ | Tuples.cs:17:14:17:14 | access to local variable p | access to local variable p |
| Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:21:14:21:20 | access to field Item1 | $@ | Tuples.cs:21:14:21:20 | access to field Item1 | access to field Item1 |
| Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:5:21:5:34 | "taint source" : String | Tuples.cs:22:14:22:16 | access to field Item1 | $@ | Tuples.cs:22:14:22:16 | access to field Item1 | access to field Item1 |
| Tuples.cs:5:41:5:54 | "taint source" : String | Tuples.cs:5:41:5:54 | "taint source" : String | Tuples.cs:9:14:9:14 | access to local variable c | $@ | Tuples.cs:9:14:9:14 | access to local variable c | access to local variable c |
| Tuples.cs:5:41:5:54 | "taint source" : String | Tuples.cs:5:41:5:54 | "taint source" : String | Tuples.cs:14:14:14:14 | access to local variable c | $@ | Tuples.cs:14:14:14:14 | access to local variable c | access to local variable c |
| Tuples.cs:5:41:5:54 | "taint source" : String | Tuples.cs:5:41:5:54 | "taint source" : String | Tuples.cs:19:14:19:20 | access to field Item2 | $@ | Tuples.cs:19:14:19:20 | access to field Item2 | access to field Item2 |
| Tuples.cs:5:41:5:54 | "taint source" : String | Tuples.cs:5:41:5:54 | "taint source" : String | Tuples.cs:24:14:24:26 | access to field Item2 | $@ | Tuples.cs:24:14:24:26 | access to field Item2 | access to field Item2 |
| Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:9:14:9:14 | access to local variable a | $@ | Tuples.cs:9:14:9:14 | access to local variable a | access to local variable a |
| Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:14:14:14:14 | access to local variable a | $@ | Tuples.cs:14:14:14:14 | access to local variable a | access to local variable a |
| Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:19:14:19:14 | access to local variable p | $@ | Tuples.cs:19:14:19:14 | access to local variable p | access to local variable p |
| Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:23:14:23:20 | access to field Item1 | $@ | Tuples.cs:23:14:23:20 | access to field Item1 | access to field Item1 |
| Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:7:21:7:34 | "taint source" : String | Tuples.cs:24:14:24:16 | access to field Item1 | $@ | Tuples.cs:24:14:24:16 | access to field Item1 | access to field Item1 |
| Tuples.cs:7:41:7:54 | "taint source" : String | Tuples.cs:7:41:7:54 | "taint source" : String | Tuples.cs:11:14:11:14 | access to local variable c | $@ | Tuples.cs:11:14:11:14 | access to local variable c | access to local variable c |
| Tuples.cs:7:41:7:54 | "taint source" : String | Tuples.cs:7:41:7:54 | "taint source" : String | Tuples.cs:16:14:16:14 | access to local variable c | $@ | Tuples.cs:16:14:16:14 | access to local variable c | access to local variable c |
| Tuples.cs:7:41:7:54 | "taint source" : String | Tuples.cs:7:41:7:54 | "taint source" : String | Tuples.cs:21:14:21:20 | access to field Item2 | $@ | Tuples.cs:21:14:21:20 | access to field Item2 | access to field Item2 |
| Tuples.cs:7:41:7:54 | "taint source" : String | Tuples.cs:7:41:7:54 | "taint source" : String | Tuples.cs:26:14:26:26 | access to field Item2 | $@ | Tuples.cs:26:14:26:26 | access to field Item2 | access to field Item2 |
| Tuples.cs:31:18:31:31 | "taint source" : String | Tuples.cs:31:18:31:31 | "taint source" : String | Tuples.cs:32:14:32:20 | access to field Item1 | $@ | Tuples.cs:32:14:32:20 | access to field Item1 | access to field Item1 |
| Tuples.cs:31:58:31:71 | "taint source" : String | Tuples.cs:31:58:31:71 | "taint source" : String | Tuples.cs:34:14:34:21 | access to field Item10 | $@ | Tuples.cs:34:14:34:21 | access to field Item10 | access to field Item10 |
| Tuples.cs:39:48:39:61 | "taint source" : String | Tuples.cs:39:48:39:61 | "taint source" : String | Tuples.cs:40:14:40:20 | access to field Item1 | $@ | Tuples.cs:40:14:40:20 | access to field Item1 | access to field Item1 |
| Tuples.cs:66:24:66:37 | "taint source" : String | Tuples.cs:66:24:66:37 | "taint source" : String | Tuples.cs:67:14:67:16 | access to property i | $@ | Tuples.cs:67:14:67:16 | access to property i | access to property i |