Skip to content

Commit 2b1f34e

Browse files
committed
Java: Don't clear content in store steps in summaries.
1 parent 62730e7 commit 2b1f34e

File tree

2 files changed

+2
-3
lines changed

2 files changed

+2
-3
lines changed

java/ql/lib/semmle/code/java/dataflow/internal/DataFlowPrivate.qll

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,7 @@ predicate readStep(Node node1, Content f, Node node2) {
150150
* in `x.f = newValue`.
151151
*/
152152
predicate clearsContent(Node n, Content c) {
153-
c instanceof FieldContent and
154-
n = any(PostUpdateNode pun | storeStep(_, c, pun)).getPreUpdateNode()
153+
exists(FieldAccess fa | instanceFieldAssign(_, fa) and n = getFieldQualifier(fa))
155154
or
156155
FlowSummaryImpl::Private::Steps::summaryClearsContent(n, c)
157156
}

java/ql/test/library-tests/dataflow/callback-dispatch/A.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ void foo3() {
174174
a1.field1 = source(20);
175175
A a2 = new A();
176176
applyConsumer1Field1Field2(a1, a2, p -> {
177-
sink(p); // MISSING FLOW
177+
sink(p); // $ flow=20
178178
});
179179
wrapSinkToAvoidFieldSsa(a1);
180180
sink(a2.field2);

0 commit comments

Comments
 (0)