build the graph with subseq. Subseq is strated with [Merge] and ended with [Join], where data of control flows are separated by [Sep].
(
&mut self,
subseq: TaintDataVec,
previous_data: Option<&TaintData>,
subsequent_data: Option<&TaintData>,
)
| 784 | |
| 785 | /// build the graph with subseq. Subseq is strated with [Merge] and ended with [Join], where data of control flows are separated by [Sep]. |
| 786 | fn build_from_subseq( |
| 787 | &mut self, |
| 788 | subseq: TaintDataVec, |
| 789 | previous_data: Option<&TaintData>, |
| 790 | subsequent_data: Option<&TaintData>, |
| 791 | ) -> Result<()> { |
| 792 | log::trace!("build ADG from subseq: {subseq:?}, previous: {previous_data:?}, subsequent: {subsequent_data:?}"); |
| 793 | let path_subseqs = Self::split_subseq_by_sep(&subseq); |
| 794 | for path_subseq in path_subseqs { |
| 795 | self.build_from_single_path_subseq(path_subseq, &previous_data, &subsequent_data)?; |
| 796 | } |
| 797 | Ok(()) |
| 798 | } |
| 799 | |
| 800 | /// build the graph with a sequence of taint data. |
| 801 | fn build_from_seq(&mut self, sym_data_seq: &mut TaintDataVec) -> Result<()> { |
no test coverage detected