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

Method exploit_transform

src/program/libfuzzer.rs:154–194  ·  view source on GitHub ↗

transform the programs be more exploitable. transform all array/scalar arguments be fuzzable and consider their constraints.

(&mut self)

Source from the content-addressed store, hash-verified

152 // transform the programs be more exploitable.
153 // transform all array/scalar arguments be fuzzable and consider their constraints.
154 fn exploit_transform(&mut self) -> Result<()> {
155 log::info!("Transform the correct programs to fuzzers with Constraints!");
156 if crate::program::infer::load_constraints(&self.deopt).is_err() {
157 let succ_programs =
158 crate::deopt::utils::read_sort_dir(&self.deopt.get_library_succ_seed_dir()?)?;
159 self.init_corpus_before_constraint_infer(&succ_programs)?;
160 crate::program::infer::infer_constraints(&succ_programs, &self.deopt)?;
161 }
162
163 let core = max_cpu_count();
164
165 let mut test_corpus = vec![];
166 let mut new_programs = vec![];
167 for program in self.programs.iter() {
168 if let Ok(corpora) = find_testbed_corpora(program, &self.deopt) {
169 test_corpus.push(corpora);
170 new_programs.push(program.to_path_buf());
171 } else {
172 log::error!("Failed to find testbed corpora for program: {program:?}, skip it and continue...");
173 }
174 }
175 self.programs = new_programs;
176
177 let executor = Executor::default();
178 let mut tasks = Vec::new();
179 let mut task_corpus = Vec::new();
180 for (i, program) in self.programs.iter().enumerate() {
181 let corpora = &test_corpus[i];
182 let i = i + 1;
183 tasks.push(program.clone());
184 task_corpus.push(corpora.to_path_buf());
185
186 if i % core == 0 || i == self.programs.len() {
187 executor.concurrent_transform(&tasks, core, true, &task_corpus)?;
188 tasks.clear();
189 task_corpus.clear();
190 log::debug!("transformed {i}/{}", self.programs.len());
191 }
192 }
193 Ok(())
194 }
195
196 pub fn synthesis(&mut self) -> Result<()> {
197 log::info!("synthesis huge fuzzers!");

Callers 1

transformMethod · 0.80

Calls 10

load_constraintsFunction · 0.85
read_sort_dirFunction · 0.85
max_cpu_countFunction · 0.85
find_testbed_corporaFunction · 0.85
concurrent_transformMethod · 0.80
infer_constraintsFunction · 0.50
pushMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected