diff --git a/java/ql/src/utils/model-generator/CaptureSummaryModels.ql b/java/ql/src/utils/model-generator/CaptureSummaryModels.ql index 3a892fdf4ea..04ce0bf31a0 100644 --- a/java/ql/src/utils/model-generator/CaptureSummaryModels.ql +++ b/java/ql/src/utils/model-generator/CaptureSummaryModels.ql @@ -5,7 +5,6 @@ */ import java -import ModelGeneratorUtils import semmle.code.java.dataflow.TaintTracking import semmle.code.java.dataflow.internal.DataFlowImplCommon import semmle.code.java.dataflow.internal.DataFlowNodes @@ -148,6 +147,8 @@ private predicate thisAccess(DataFlow::Node n) { n.asExpr().(InstanceAccess).isOwnInstanceAccess() or n.(DataFlow::ImplicitInstanceAccess).getInstanceAccess() instanceof OwnInstanceAccess + or + n.asExpr().(FieldAccess).isOwnFieldAccess() } /** diff --git a/java/ql/test/utils/model-generator/CaptureSummaryModels.expected b/java/ql/test/utils/model-generator/CaptureSummaryModels.expected index 74e5eb9a378..f26ff2c9c21 100644 --- a/java/ql/test/utils/model-generator/CaptureSummaryModels.expected +++ b/java/ql/test/utils/model-generator/CaptureSummaryModels.expected @@ -9,6 +9,7 @@ | p;ImmutablePojo;false;or;(String);;Argument[0];ReturnValue;taint | | p;InnerClasses$CaptureMe;true;yesCm;(String);;Argument[0];ReturnValue;taint | | p;InnerClasses;true;yes;(String);;Argument[0];ReturnValue;taint | +| p;InnerHolder;false;append;(String);;Argument[0];Argument[-1];taint | | p;InnerHolder;false;explicitSetContext;(String);;Argument[0];Argument[-1];taint | | p;InnerHolder;false;getValue;();;Argument[-1];ReturnValue;taint | | p;InnerHolder;false;setContext;(String);;Argument[0];Argument[-1];taint | diff --git a/java/ql/test/utils/model-generator/p/InnerHolder.java b/java/ql/test/utils/model-generator/p/InnerHolder.java index 8fce2d7fde6..5dc07cadd51 100644 --- a/java/ql/test/utils/model-generator/p/InnerHolder.java +++ b/java/ql/test/utils/model-generator/p/InnerHolder.java @@ -16,6 +16,8 @@ public final class InnerHolder { private Context context = null; + private StringBuilder sb = new StringBuilder(); + public void setContext(String value) { context = new Context(value); } @@ -24,6 +26,10 @@ public final class InnerHolder { this.context = new Context(value); } + public void append(String value) { + sb.append(value); + } + public String getValue() { return context.getValue(); }