function(test1). bind_func(test1, entry). function(appendA; appendB; append). scope(0..3). %scope tags: no tags at all % Static analysis: CFA cfa_parent(0, function(test1)). cfa_parent(1, function(appendA)). cfa_parent(2, function(appendB)). cfa_parent(3, function(append)). cfa_call(0, appendA). cfa_call(0, appendB). cfa_call(1, append). cfa_call(2, append). % Static analysis: DFA dfa_connection((2, 3), (anonym(0), 1), weak). %append:msg - anonym(0) dfa_connection((3, 3), (anonym(1), 1), weak). %append:filename - anonym(1) dfa_connection((0, 1), (0, 3), strong). %appendA: *retv - append: *retv dfa_connection((2, 3), (anonym(2), 2), weak). %append:msg - anonym(2) dfa_connection((3, 3), (anonym(3), 2), weak). %append:filename - anonym(3) dfa_connection((0, 2), (0, 3), strong). %appendB: *retv - append: *retv v((anonym(0), 1)). %anonym(0) v((anonym(1), 1)). %anonym(1) v((0, 2)). %appendB: *retv v((anonym(2), 2)). %anonym(2) v((anonym(3), 2)). %anonym(3) v((0, 3)). %append: *retv v((2, 3)). %append:msg v((3, 3)). %append:filename cfa_forwdom(0, range(0, 7)). cfa_forwdom(1, range(1, 2)). cfa_forwdom(2, range(5, 6)). cfa_forwdom(3, range(3, 4)). cfa_postdom(0, range(3, 4)). cfa_postdom(1, range(1, 2)). cfa_postdom(2, range(5, 6)). cfa_postdom(3, range(0, 7)). % EXPLOITATION TAGS: bind((3,3), exploitation_initialized(file)). % BIND ACTUAL DATA FOR STATIC SYMBOLS bind((anonym(0), 1), static(data(a))). %anonym(0) bind((anonym(1), 1), static(data(tmp_test1_txt))). %anonym(1) bind((anonym(2), 2), static(data(b))). %anonym(2) bind((anonym(3), 2), static(data(tmp_test1_txt))). %anonym(3)