Predicate flowsToStoreStep
Holds if nodeFrom is being written to the content of the object in nodeTo.
Note that nodeTo will always be a local source node that flows to the place where the content
is written in basicStoreStep. This may lead to the flow of information going “back in time”
from the point of view of the execution of the program.
For instance, if we interpret attribute writes in Python as writing to content with the same name as the attribute and consider the following snippet
def foo(y):
x = Foo()
bar(x)
x.attr = y
baz(x)
def bar(x):
z = x.attr
for the attribute write x.attr = y, we will have content being the literal string "attr",
nodeFrom will be y, and nodeTo will be the object Foo() created on the first line of the
function. This means we will track the fact that x.attr can have the type of y into the
assignment to z inside bar, even though this attribute write happens after bar is called.
Import path
import codeql.ruby.typetracking.TypeTrackerpredicate flowsToStoreStep(Node nodeFrom, TypeTrackingNode nodeTo, TypeTrackerContent content)