MCPcopy Create free account
hub / github.com/FuzzAnything/PromptFuzz / build_from_seq

Method build_from_seq

src/analysis/adg.rs:801–815  ·  view source on GitHub ↗

build the graph with a sequence of taint data.

(&mut self, sym_data_seq: &mut TaintDataVec)

Source from the content-addressed store, hash-verified

799
800 /// build the graph with a sequence of taint data.
801 fn build_from_seq(&mut self, sym_data_seq: &mut TaintDataVec) -> Result<()> {
802 log::trace!("build ADG from seq: {sym_data_seq:?}");
803 loop {
804 if let Some((merge_idx, subseq)) = self.find_minimal_subseq(sym_data_seq) {
805 let previous = Self::get_merge_previous_data(sym_data_seq.as_slice(), merge_idx);
806 let subsequent = Self::get_join_subsequent_data(sym_data_seq, merge_idx);
807 self.build_from_subseq(subseq, previous, subsequent)?;
808 } else {
809 let seq = Vec::from_iter(sym_data_seq.iter());
810 self.build_from_single_path_subseq(seq, &None, &None)?;
811 break;
812 }
813 }
814 Ok(())
815 }
816
817 /// Build the ADG from the analysis result of DFA. The input result is evaluated symbols and their taint data during DFA.
818 pub fn build_from_analysis_result(&mut self, mut result: Storage<TaintDataVec>) -> Result<()> {

Callers 1

Calls 3

find_minimal_subseqMethod · 0.80
build_from_subseqMethod · 0.80

Tested by

no test coverage detected