Skip to content

Data flow: Rework reverse flow through parameters #18109

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 12 commits into
base: main
Choose a base branch
from
Draft
Prev Previous commit
Next Next commit
Disable reverse flow through stores
  • Loading branch information
hvitved committed Dec 20, 2024
commit 828ba231560df8c8c5386413759d31351901b272
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,8 @@ edges
| A.cpp:142:7:142:20 | ... = ... | A.cpp:142:7:142:7 | *b [post update] [c] | provenance | |
| A.cpp:142:14:142:20 | new | A.cpp:142:7:142:20 | ... = ... | provenance | |
| A.cpp:143:7:143:10 | *this [post update] [*b, c] | A.cpp:140:5:140:5 | *this [Reverse] [*b, c] | provenance | |
| A.cpp:143:7:143:10 | *this [post update] [*b, c] | A.cpp:143:7:143:10 | *this [post update] [Reverse] [*b, c] | provenance | |
| A.cpp:143:7:143:10 | *this [post update] [Reverse] [*b, c] | A.cpp:143:7:143:31 | *... = ... [Reverse] [c] | provenance | |
| A.cpp:143:7:143:10 | *this [post update] [b] | A.cpp:140:5:140:5 | *this [Reverse] [b] | provenance | |
| A.cpp:143:7:143:10 | *this [post update] [b] | A.cpp:140:5:140:5 | *this [Reverse] [b] | provenance | |
| A.cpp:143:7:143:31 | *... = ... [Reverse] [c] | A.cpp:140:13:140:13 | *b [Reverse] [c] | provenance | |
| A.cpp:143:7:143:31 | *... = ... [c] | A.cpp:143:7:143:10 | *this [post update] [*b, c] | provenance | |
| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | *this [post update] [b] | provenance | |
| A.cpp:143:7:143:31 | ... = ... | A.cpp:143:7:143:10 | *this [post update] [b] | provenance | |
Expand Down Expand Up @@ -1017,10 +1014,8 @@ nodes
| A.cpp:142:7:142:20 | ... = ... | semmle.label | ... = ... |
| A.cpp:142:14:142:20 | new | semmle.label | new |
| A.cpp:143:7:143:10 | *this [post update] [*b, c] | semmle.label | *this [post update] [*b, c] |
| A.cpp:143:7:143:10 | *this [post update] [Reverse] [*b, c] | semmle.label | *this [post update] [Reverse] [*b, c] |
| A.cpp:143:7:143:10 | *this [post update] [b] | semmle.label | *this [post update] [b] |
| A.cpp:143:7:143:10 | *this [post update] [b] | semmle.label | *this [post update] [b] |
| A.cpp:143:7:143:31 | *... = ... [Reverse] [c] | semmle.label | *... = ... [Reverse] [c] |
| A.cpp:143:7:143:31 | *... = ... [c] | semmle.label | *... = ... [c] |
| A.cpp:143:7:143:31 | ... = ... | semmle.label | ... = ... |
| A.cpp:143:7:143:31 | ... = ... | semmle.label | ... = ... |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public void M7()
{
var a = new A();
M8(a);
Sink(a.Field); // $ hasValueFlow=3
Sink(a.Field); // $ MISSING: hasValueFlow=3
}

public void M8(A a)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,26 +44,6 @@ edges
| ReverseFlow.cs:39:9:39:12 | [post] this access : A [field Field] : String | ReverseFlow.cs:37:17:37:18 | this [Reverse] : A [field Field] : String | provenance | |
| ReverseFlow.cs:39:22:39:38 | call to method Source<String> : String | ReverseFlow.cs:39:9:39:12 | [post] this access : A [field Field] : String | provenance | |
| ReverseFlow.cs:39:22:39:38 | call to method Source<String> : String | ReverseFlow.cs:39:9:39:12 | [post] this access : A [field Field] : String | provenance | |
| ReverseFlow.cs:45:12:45:12 | [post] access to local variable a : A [field Field] : String | ReverseFlow.cs:46:14:46:14 | access to local variable a : A [field Field] : String | provenance | |
| ReverseFlow.cs:45:12:45:12 | [post] access to local variable a : A [field Field] : String | ReverseFlow.cs:46:14:46:14 | access to local variable a : A [field Field] : String | provenance | |
| ReverseFlow.cs:46:14:46:14 | access to local variable a : A [field Field] : String | ReverseFlow.cs:46:14:46:20 | access to field Field | provenance | |
| ReverseFlow.cs:46:14:46:14 | access to local variable a : A [field Field] : String | ReverseFlow.cs:46:14:46:20 | access to field Field | provenance | |
| ReverseFlow.cs:49:22:49:22 | a [Reverse] : A [field Field] : String | ReverseFlow.cs:45:12:45:12 | [post] access to local variable a : A [field Field] : String | provenance | |
| ReverseFlow.cs:49:22:49:22 | a [Reverse] : A [field Field] : String | ReverseFlow.cs:45:12:45:12 | [post] access to local variable a : A [field Field] : String | provenance | |
| ReverseFlow.cs:52:9:52:9 | [post] access to local variable b [Reverse] : A [field Nested, field Field] : String | ReverseFlow.cs:52:20:52:20 | access to parameter a [Reverse] : A [field Field] : String | provenance | |
| ReverseFlow.cs:52:9:52:9 | [post] access to local variable b [Reverse] : A [field Nested, field Field] : String | ReverseFlow.cs:52:20:52:20 | access to parameter a [Reverse] : A [field Field] : String | provenance | |
| ReverseFlow.cs:52:20:52:20 | access to parameter a [Reverse] : A [field Field] : String | ReverseFlow.cs:49:22:49:22 | a [Reverse] : A [field Field] : String | provenance | |
| ReverseFlow.cs:52:20:52:20 | access to parameter a [Reverse] : A [field Field] : String | ReverseFlow.cs:49:22:49:22 | a [Reverse] : A [field Field] : String | provenance | |
| ReverseFlow.cs:53:12:53:12 | [post] access to local variable b : A [field Nested, field Field] : String | ReverseFlow.cs:52:9:52:9 | [post] access to local variable b [Reverse] : A [field Nested, field Field] : String | provenance | |
| ReverseFlow.cs:53:12:53:12 | [post] access to local variable b : A [field Nested, field Field] : String | ReverseFlow.cs:52:9:52:9 | [post] access to local variable b [Reverse] : A [field Nested, field Field] : String | provenance | |
| ReverseFlow.cs:56:22:56:22 | a [Reverse] : A [field Nested, field Field] : String | ReverseFlow.cs:53:12:53:12 | [post] access to local variable b : A [field Nested, field Field] : String | provenance | |
| ReverseFlow.cs:56:22:56:22 | a [Reverse] : A [field Nested, field Field] : String | ReverseFlow.cs:53:12:53:12 | [post] access to local variable b : A [field Nested, field Field] : String | provenance | |
| ReverseFlow.cs:58:9:58:9 | [post] access to parameter a : A [field Nested, field Field] : String | ReverseFlow.cs:56:22:56:22 | a [Reverse] : A [field Nested, field Field] : String | provenance | |
| ReverseFlow.cs:58:9:58:9 | [post] access to parameter a : A [field Nested, field Field] : String | ReverseFlow.cs:56:22:56:22 | a [Reverse] : A [field Nested, field Field] : String | provenance | |
| ReverseFlow.cs:58:9:58:16 | [post] access to field Nested : A [field Field] : String | ReverseFlow.cs:58:9:58:9 | [post] access to parameter a : A [field Nested, field Field] : String | provenance | |
| ReverseFlow.cs:58:9:58:16 | [post] access to field Nested : A [field Field] : String | ReverseFlow.cs:58:9:58:9 | [post] access to parameter a : A [field Nested, field Field] : String | provenance | |
| ReverseFlow.cs:58:26:58:42 | call to method Source<String> : String | ReverseFlow.cs:58:9:58:16 | [post] access to field Nested : A [field Field] : String | provenance | |
| ReverseFlow.cs:58:26:58:42 | call to method Source<String> : String | ReverseFlow.cs:58:9:58:16 | [post] access to field Nested : A [field Field] : String | provenance | |
| ReverseFlow.cs:66:9:66:26 | [post] call to method GetNestedNested : A [field Field] : String | ReverseFlow.cs:66:9:66:26 | call to method GetNestedNested [Reverse] : A [field Field] : String | provenance | |
| ReverseFlow.cs:66:9:66:26 | [post] call to method GetNestedNested : A [field Field] : String | ReverseFlow.cs:66:9:66:26 | call to method GetNestedNested [Reverse] : A [field Field] : String | provenance | |
| ReverseFlow.cs:66:9:66:26 | call to method GetNestedNested [Reverse] : A [field Field] : String | ReverseFlow.cs:66:25:66:25 | [post] access to local variable a : A [field Nested, field Nested, field Field] : String | provenance | |
Expand Down Expand Up @@ -141,28 +121,6 @@ nodes
| ReverseFlow.cs:39:9:39:12 | [post] this access : A [field Field] : String | semmle.label | [post] this access : A [field Field] : String |
| ReverseFlow.cs:39:22:39:38 | call to method Source<String> : String | semmle.label | call to method Source<String> : String |
| ReverseFlow.cs:39:22:39:38 | call to method Source<String> : String | semmle.label | call to method Source<String> : String |
| ReverseFlow.cs:45:12:45:12 | [post] access to local variable a : A [field Field] : String | semmle.label | [post] access to local variable a : A [field Field] : String |
| ReverseFlow.cs:45:12:45:12 | [post] access to local variable a : A [field Field] : String | semmle.label | [post] access to local variable a : A [field Field] : String |
| ReverseFlow.cs:46:14:46:14 | access to local variable a : A [field Field] : String | semmle.label | access to local variable a : A [field Field] : String |
| ReverseFlow.cs:46:14:46:14 | access to local variable a : A [field Field] : String | semmle.label | access to local variable a : A [field Field] : String |
| ReverseFlow.cs:46:14:46:20 | access to field Field | semmle.label | access to field Field |
| ReverseFlow.cs:46:14:46:20 | access to field Field | semmle.label | access to field Field |
| ReverseFlow.cs:49:22:49:22 | a [Reverse] : A [field Field] : String | semmle.label | a [Reverse] : A [field Field] : String |
| ReverseFlow.cs:49:22:49:22 | a [Reverse] : A [field Field] : String | semmle.label | a [Reverse] : A [field Field] : String |
| ReverseFlow.cs:52:9:52:9 | [post] access to local variable b [Reverse] : A [field Nested, field Field] : String | semmle.label | [post] access to local variable b [Reverse] : A [field Nested, field Field] : String |
| ReverseFlow.cs:52:9:52:9 | [post] access to local variable b [Reverse] : A [field Nested, field Field] : String | semmle.label | [post] access to local variable b [Reverse] : A [field Nested, field Field] : String |
| ReverseFlow.cs:52:20:52:20 | access to parameter a [Reverse] : A [field Field] : String | semmle.label | access to parameter a [Reverse] : A [field Field] : String |
| ReverseFlow.cs:52:20:52:20 | access to parameter a [Reverse] : A [field Field] : String | semmle.label | access to parameter a [Reverse] : A [field Field] : String |
| ReverseFlow.cs:53:12:53:12 | [post] access to local variable b : A [field Nested, field Field] : String | semmle.label | [post] access to local variable b : A [field Nested, field Field] : String |
| ReverseFlow.cs:53:12:53:12 | [post] access to local variable b : A [field Nested, field Field] : String | semmle.label | [post] access to local variable b : A [field Nested, field Field] : String |
| ReverseFlow.cs:56:22:56:22 | a [Reverse] : A [field Nested, field Field] : String | semmle.label | a [Reverse] : A [field Nested, field Field] : String |
| ReverseFlow.cs:56:22:56:22 | a [Reverse] : A [field Nested, field Field] : String | semmle.label | a [Reverse] : A [field Nested, field Field] : String |
| ReverseFlow.cs:58:9:58:9 | [post] access to parameter a : A [field Nested, field Field] : String | semmle.label | [post] access to parameter a : A [field Nested, field Field] : String |
| ReverseFlow.cs:58:9:58:9 | [post] access to parameter a : A [field Nested, field Field] : String | semmle.label | [post] access to parameter a : A [field Nested, field Field] : String |
| ReverseFlow.cs:58:9:58:16 | [post] access to field Nested : A [field Field] : String | semmle.label | [post] access to field Nested : A [field Field] : String |
| ReverseFlow.cs:58:9:58:16 | [post] access to field Nested : A [field Field] : String | semmle.label | [post] access to field Nested : A [field Field] : String |
| ReverseFlow.cs:58:26:58:42 | call to method Source<String> : String | semmle.label | call to method Source<String> : String |
| ReverseFlow.cs:58:26:58:42 | call to method Source<String> : String | semmle.label | call to method Source<String> : String |
| ReverseFlow.cs:66:9:66:26 | [post] call to method GetNestedNested : A [field Field] : String | semmle.label | [post] call to method GetNestedNested : A [field Field] : String |
| ReverseFlow.cs:66:9:66:26 | [post] call to method GetNestedNested : A [field Field] : String | semmle.label | [post] call to method GetNestedNested : A [field Field] : String |
| ReverseFlow.cs:66:9:66:26 | call to method GetNestedNested [Reverse] : A [field Field] : String | semmle.label | call to method GetNestedNested [Reverse] : A [field Field] : String |
Expand Down Expand Up @@ -204,8 +162,6 @@ testFailures
| ReverseFlow.cs:11:14:11:27 | access to field Field | ReverseFlow.cs:22:19:22:35 | call to method Source<String> : String | ReverseFlow.cs:11:14:11:27 | access to field Field | $@ | ReverseFlow.cs:22:19:22:35 | call to method Source<String> : String | call to method Source<String> : String |
| ReverseFlow.cs:28:14:28:30 | access to field Field | ReverseFlow.cs:39:22:39:38 | call to method Source<String> : String | ReverseFlow.cs:28:14:28:30 | access to field Field | $@ | ReverseFlow.cs:39:22:39:38 | call to method Source<String> : String | call to method Source<String> : String |
| ReverseFlow.cs:28:14:28:30 | access to field Field | ReverseFlow.cs:39:22:39:38 | call to method Source<String> : String | ReverseFlow.cs:28:14:28:30 | access to field Field | $@ | ReverseFlow.cs:39:22:39:38 | call to method Source<String> : String | call to method Source<String> : String |
| ReverseFlow.cs:46:14:46:20 | access to field Field | ReverseFlow.cs:58:26:58:42 | call to method Source<String> : String | ReverseFlow.cs:46:14:46:20 | access to field Field | $@ | ReverseFlow.cs:58:26:58:42 | call to method Source<String> : String | call to method Source<String> : String |
| ReverseFlow.cs:46:14:46:20 | access to field Field | ReverseFlow.cs:58:26:58:42 | call to method Source<String> : String | ReverseFlow.cs:46:14:46:20 | access to field Field | $@ | ReverseFlow.cs:58:26:58:42 | call to method Source<String> : String | call to method Source<String> : String |
| ReverseFlow.cs:67:14:67:34 | access to field Field | ReverseFlow.cs:66:36:66:52 | call to method Source<String> : String | ReverseFlow.cs:67:14:67:34 | access to field Field | $@ | ReverseFlow.cs:66:36:66:52 | call to method Source<String> : String | call to method Source<String> : String |
| ReverseFlow.cs:67:14:67:34 | access to field Field | ReverseFlow.cs:66:36:66:52 | call to method Source<String> : String | ReverseFlow.cs:67:14:67:34 | access to field Field | $@ | ReverseFlow.cs:66:36:66:52 | call to method Source<String> : String | call to method Source<String> : String |
| ReverseFlow.cs:81:14:81:20 | access to field Field | ReverseFlow.cs:80:19:80:35 | call to method Source<String> : String | ReverseFlow.cs:81:14:81:20 | access to field Field | $@ | ReverseFlow.cs:80:19:80:35 | call to method Source<String> : String | call to method Source<String> : String |
Expand Down
Loading
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy