{"file_version":3,"config":{"repo":"/private/tmp/dfb-v092-pysa-226cc4a69bab46429b3e/dataflowbench-pysa-python/dfb-taint-python-recursive-callback-transform-positive"}}
{"kind":"model","data":{"callable":"recursive_callback_transform.dfb_source","filename":"src/recursive_callback_transform.py","callable_line":1,"sources":[{"port":"result","taint":[{"kinds":[{"features":[{"always-type":"integer"},{"always-type":"scalar"}],"kind":"DfbSource"}],"declaration":null}]}]}}
{"kind":"model","data":{"callable":"recursive_callback_transform.dfb_sink","filename":"src/recursive_callback_transform.py","callable_line":5,"sinks":[{"port":"formal(value, position=0)","taint":[{"kinds":[{"kind":"DfbSink"}],"declaration":null}]}]}}
{"kind":"model","data":{"callable":"recursive_callback_transform.walk","filename":"src/recursive_callback_transform.py","callable_line":9,"tito":[{"port":"formal(step, position=2)","taint":[{"kinds":[{"return_paths":{"":0},"kind":"LocalReturn"}],"local_features":[{"always-via":"obscure:unknown-callee"}],"tito":{}}]},{"port":"formal(depth, position=1)[__sub__]","taint":[{"kinds":[{"return_paths":{"":0},"kind":"LocalReturn"}],"local_features":[{"always-via":"obscure:unknown-callee"}],"tito_positions":[{"line":12,"start":23,"end":32}],"tito":{}}]},{"port":"formal(value, position=0)","taint":[{"kinds":[{"return_paths":{"":0},"kind":"LocalReturn"}],"local_features":[{"via":"obscure:unknown-callee"}],"tito_positions":[{"line":12,"start":16,"end":21}],"tito":{}}]}]}}
{"kind":"model","data":{"callable":"recursive_callback_transform.step","filename":"src/recursive_callback_transform.py","callable_line":15,"tito":[{"port":"formal(value, position=0)[__add__]","taint":[{"kinds":[{"return_paths":{"":0},"length":1,"kind":"LocalReturn"}],"local_features":[{"via":"model-shaping"},{"always-via":"tito-broadening"},{"always-via":"tito"},{"always-via":"broadening"},{"via":"model-tito-shaping"},{"always-via":"obscure:unknown-callee"}],"tito_positions":[{"line":17,"start":28,"end":38}],"tito":{}}]}]}}
{"kind":"issue","data":{"callable":"recursive_callback_transform.run","callable_line":21,"code":9901,"line":22,"start":13,"end":40,"filename":"src/recursive_callback_transform.py","message":"Benchmark-controlled flow from source to sink","traces":[{"name":"forward","roots":[{"kinds":[{"local_features":[{"always-type":"integer"},{"always-type":"scalar"}],"leaves":[{"name":"recursive_callback_transform.dfb_source","port":"leaf:return"}],"kind":"DfbSource"}],"local_features":[{"always-type":"integer"},{"always-type":"scalar"},{"via":"model-shaping"},{"via":"tito-broadening"},{"always-via":"tito"},{"via":"broadening"},{"via":"model-tito-shaping"},{"via":"obscure:unknown-callee"}],"tito_positions":[{"line":22,"start":18,"end":30}],"origin":{"line":22,"start":18,"end":30}}]},{"name":"backward","roots":[{"kinds":[{"leaves":[{"name":"recursive_callback_transform.dfb_sink","port":"leaf:value"}],"kind":"DfbSink"}],"origin":{"line":22,"start":13,"end":40},"call_site":"22:4-22:41"}]}],"features":[{"always-type":"integer"},{"always-type":"scalar"},{"via":"model-shaping"},{"via":"tito-broadening"},{"always-via":"tito"},{"via":"broadening"},{"via":"model-tito-shaping"},{"via":"obscure:unknown-callee"}],"sink_handle":{"kind":"Call","callee":"recursive_callback_transform.dfb_sink","index":0,"parameter":"formal(value)"},"master_handle":"recursive_callback_transform.run:9901:0:Call|recursive_callback_transform.dfb_sink|0|formal(value):73e6dff6eace54f3e077fe0bac95dabf"}}
{"kind":"model","data":{"callable":"ast._Attributes.__init__","filename":"*","tito":[{"port":"formal(**kwargs, excluded=[col_offset,end_col_offset,end_lineno,lineno])","taint":[{"kinds":[{"return_paths":{"[*]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(lineno)","taint":[{"kinds":[{"return_paths":{"[lineno]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(end_lineno)","taint":[{"kinds":[{"return_paths":{"[end_lineno]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(end_col_offset)","taint":[{"kinds":[{"return_paths":{"[end_col_offset]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(col_offset)","taint":[{"kinds":[{"return_paths":{"[col_offset]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(__iterable, position=1, positional_only)[*]","taint":[{"kinds":[{"return_paths":{"[*]":0},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(__iterable, position=1, positional_only).**keys","taint":[{"kinds":[{"return_paths":{".**keys":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]}]}}
{"kind":"model","data":{"callable":"decimal.DecimalTuple.__init__","filename":"*","tito":[{"port":"formal(exponent, position=3)","taint":[{"kinds":[{"return_paths":{"[exponent]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(digits, position=2)","taint":[{"kinds":[{"return_paths":{"[digits]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(sign, position=1)","taint":[{"kinds":[{"return_paths":{"[sign]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]}]}}
{"kind":"model","data":{"callable":"functools._CacheInfo.__init__","filename":"*","tito":[{"port":"formal(currsize, position=4)","taint":[{"kinds":[{"return_paths":{"[currsize]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(maxsize, position=3)","taint":[{"kinds":[{"return_paths":{"[maxsize]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(misses, position=2)","taint":[{"kinds":[{"return_paths":{"[misses]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(hits, position=1)","taint":[{"kinds":[{"return_paths":{"[hits]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]}]}}
{"kind":"model","data":{"callable":"functools._CacheParameters.__init__","filename":"*","tito":[{"port":"formal(**kwargs, excluded=[maxsize,typed])","taint":[{"kinds":[{"return_paths":{"[*]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(typed)","taint":[{"kinds":[{"return_paths":{"[typed]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(maxsize)","taint":[{"kinds":[{"return_paths":{"[maxsize]":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(__iterable, position=1, positional_only)[*]","taint":[{"kinds":[{"return_paths":{"[*]":0},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]},{"port":"formal(__iterable, position=1, positional_only).**keys","taint":[{"kinds":[{"return_paths":{".**keys":999999},"kind":"ParameterUpdate[formal(self, position=0)]"}],"tito":{}}]}]}}
{"kind":"model","data":{"callable":"recursive_callback_transform.walk[formal(step, position=2)=recursive_callback_transform.step]","filename":"src/recursive_callback_transform.py","callable_line":9,"tito":[{"port":"formal(value, position=0)","taint":[{"kinds":[{"return_paths":{"":0},"kind":"LocalReturn"}],"local_features":[{"via":"model-shaping"},{"via":"tito-broadening"},{"via":"tito"},{"via":"broadening"},{"via":"model-tito-shaping"},{"via":"obscure:unknown-callee"}],"tito_positions":[{"line":12,"start":16,"end":21}],"tito":{}}]}]}}
