Points-to sets of all variables
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/%taint-temp-0 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/%taint-temp-1 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/%this -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/s -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/temp$1 -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=char[]}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/temp$2 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/temp$3 -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=char[]}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]:<CSBackPropagation: void <init>()>/%this -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]:<CSBackPropagation: void <init>()>/temp$0 -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/%taint-temp-0 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/%taint-temp-1 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/%this -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/s -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/temp$1 -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=char[]}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/temp$2 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/temp$3 -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=char[]}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]:<CSBackPropagation: void <init>()>/%this -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]:<CSBackPropagation: void <init>()>/temp$0 -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/%taint-temp-0 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/%taint-temp-1 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/%this -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/s -> [[]:MergedObj{<Merged string constants>}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/temp$1 -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/temp$2 -> [[]:MergedObj{<Merged java.lang.String>}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]:<CSBackPropagation: java.lang.String transfer(java.lang.String)>/temp$3 -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]:<CSBackPropagation: void <init>()>/%this -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]
[NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]:<CSBackPropagation: void <init>()>/temp$0 -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}]
[]:<CSBackPropagation: void main(java.lang.String[])>/args -> [[]:EntryPointObj{alloc=MethodParam{<CSBackPropagation: void main(java.lang.String[])>/0},type=java.lang.String[] in <CSBackPropagation: void main(java.lang.String[])>}]
[]:<CSBackPropagation: void main(java.lang.String[])>/csbp1 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]
[]:<CSBackPropagation: void main(java.lang.String[])>/csbp2 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]
[]:<CSBackPropagation: void main(java.lang.String[])>/csbp3 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]
[]:<CSBackPropagation: void main(java.lang.String[])>/noTaint -> [[]:MergedObj{<Merged string constants>}]
[]:<CSBackPropagation: void main(java.lang.String[])>/s1 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<CSBackPropagation: void main(java.lang.String[])>/s2 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<CSBackPropagation: void main(java.lang.String[])>/s3 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<CSBackPropagation: void main(java.lang.String[])>/taint1 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<CSBackPropagation: void main(java.lang.String[])>/taint2 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<CSBackPropagation: void main(java.lang.String[])>/temp$0 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}]
[]:<CSBackPropagation: void main(java.lang.String[])>/temp$1 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<CSBackPropagation: void main(java.lang.String[])>/temp$2 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<CSBackPropagation: void main(java.lang.String[])>/temp$3 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}]
[]:<CSBackPropagation: void main(java.lang.String[])>/temp$4 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<CSBackPropagation: void main(java.lang.String[])>/temp$5 -> [[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}]
[]:<CSBackPropagation: void main(java.lang.String[])>/temp$6 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<CSBackPropagation: void main(java.lang.String[])>/temp$7 -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=java.lang.String}]
[]:<SourceSink: java.lang.String source()>/temp$0 -> [[]:MergedObj{<Merged java.lang.String>}]
[]:<SourceSink: void sink(java.lang.String)>/s -> [[]:MergedObj{<Merged java.lang.String>}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=java.lang.String}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=java.lang.String}]

Points-to sets of all static fields

Points-to sets of all instance fields
[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[0@L6] new CSBackPropagation}.buffer -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result,type=char[]}]
[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[15@L16] new CSBackPropagation}.buffer -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}, []:TaintObj{alloc=<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result,type=char[]}]
[]:NewObj{<CSBackPropagation: void main(java.lang.String[])>[8@L11] new CSBackPropagation}.buffer -> [[]:NewObj{<CSBackPropagation: void <init>()>[2@L1] newarray char[%intconst0]}]

Points-to sets of all array indexes
[]:EntryPointObj{alloc=MethodParam{<CSBackPropagation: void main(java.lang.String[])>/0},type=java.lang.String[] in <CSBackPropagation: void main(java.lang.String[])>}[*] -> [[]:EntryPointObj{alloc=MethodParam{<CSBackPropagation: void main(java.lang.String[])>/0}[*],type=java.lang.String in <CSBackPropagation: void main(java.lang.String[])>}]

Detected 2 taint flow(s):
TaintFlow{<CSBackPropagation: void main(java.lang.String[])>[3@L7] temp$1 = invokestatic SourceSink.source()/result -> <CSBackPropagation: void main(java.lang.String[])>[7@L9] invokestatic SourceSink.sink(s1)/0}
TaintFlow{<CSBackPropagation: void main(java.lang.String[])>[18@L17] temp$6 = invokestatic SourceSink.source()/result -> <CSBackPropagation: void main(java.lang.String[])>[22@L19] invokestatic SourceSink.sink(s3)/0}

