From 47104a3db8913f3cc38ebcf1382c8477f7e45657 Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Thu, 23 Jan 2020 08:14:57 +0000 Subject: [PATCH] Add explanatory comment. --- ql/src/semmle/go/dataflow/internal/DataFlowPrivate.qll | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ql/src/semmle/go/dataflow/internal/DataFlowPrivate.qll b/ql/src/semmle/go/dataflow/internal/DataFlowPrivate.qll index 9fa2e6819b2..3cb6470b8f4 100644 --- a/ql/src/semmle/go/dataflow/internal/DataFlowPrivate.qll +++ b/ql/src/semmle/go/dataflow/internal/DataFlowPrivate.qll @@ -149,6 +149,8 @@ private class PointerContent extends Content, TPointerContent { * value of `node1`. */ predicate storeStep(Node node1, Content c, PostUpdateNode node2) { + // a write `(*p).f = rhs` is modelled as two store steps: `rhs` is flows into field `f` of `(*p)`, + // which in turn flows into the pointer content of `p` exists(Write w, Field f, DataFlow::Node base, DataFlow::Node rhs | w.writesField(base, f, rhs) | node1 = rhs and node2.getPreUpdateNode() = base and