(
&mut self,
decl_name: &str,
ty: &str,
ins_pos: usize,
size_arg: Option<(&str, &str, u32)>,
)
| 1205 | } |
| 1206 | |
| 1207 | fn init_unlimit_fuzzable_list_var( |
| 1208 | &mut self, |
| 1209 | decl_name: &str, |
| 1210 | ty: &str, |
| 1211 | ins_pos: usize, |
| 1212 | size_arg: Option<(&str, &str, u32)>, |
| 1213 | ) -> Result<()> { |
| 1214 | let init_id = self.fuzzer_shim.get_init_id_inc(); |
| 1215 | let mut array_init_stmts = format!("\n\t\t{decl_name} = fuzz_{ty}_array_{};", init_id); |
| 1216 | if let Some((integer_name, integer_type, c_type)) = size_arg { |
| 1217 | let fuzzer_size_var = format!("fuzz_{ty}_array_size_{init_id}"); |
| 1218 | // ctype: 0 for ArrayLen and 1 for ArrayIndex |
| 1219 | let init_stmt = if c_type == 0 { |
| 1220 | if integer_type.contains('*') { |
| 1221 | format!("\n\t\t{integer_type} {integer_name} = static_cast<{integer_type}>(&{fuzzer_size_var});") |
| 1222 | } else { |
| 1223 | format!("\n\t\t{integer_type} {integer_name} = static_cast<{integer_type}>({fuzzer_size_var});") |
| 1224 | } |
| 1225 | } else { |
| 1226 | format!( |
| 1227 | "\n\t\tFDPGetRandomInteger({integer_type}, {integer_name}, {fuzzer_size_var})" |
| 1228 | ) |
| 1229 | }; |
| 1230 | array_init_stmts.push_str(&init_stmt); |
| 1231 | } |
| 1232 | self.fuzzer_shim |
| 1233 | .append_fuzzer_stmt(array_init_stmts.clone()); |
| 1234 | self.seek_and_rewrite(ins_pos, 0, &array_init_stmts)?; |
| 1235 | Ok(()) |
| 1236 | } |
| 1237 | } |
| 1238 | |
| 1239 | #[derive(Clone)] |
no test coverage detected