1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2019 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker #![cfg(not(test))] 6*bb4ee6a4SAndroid Build Coastguard Worker #![no_main] 7*bb4ee6a4SAndroid Build Coastguard Worker 8*bb4ee6a4SAndroid Build Coastguard Worker use std::fs::File; 9*bb4ee6a4SAndroid Build Coastguard Worker use std::io::Write; 10*bb4ee6a4SAndroid Build Coastguard Worker 11*bb4ee6a4SAndroid Build Coastguard Worker use crosvm_fuzz::fuzz_target; 12*bb4ee6a4SAndroid Build Coastguard Worker use vm_memory::GuestAddress; 13*bb4ee6a4SAndroid Build Coastguard Worker use vm_memory::GuestMemory; 14*bb4ee6a4SAndroid Build Coastguard Worker 15*bb4ee6a4SAndroid Build Coastguard Worker const MEM_SIZE: u64 = 256 * 1024 * 1024; 16*bb4ee6a4SAndroid Build Coastguard Worker make_elf_bin(elf_bytes: &[u8]) -> File17*bb4ee6a4SAndroid Build Coastguard Workerfn make_elf_bin(elf_bytes: &[u8]) -> File { 18*bb4ee6a4SAndroid Build Coastguard Worker let mut elf_bin = tempfile::tempfile().expect("failed to create tempfile"); 19*bb4ee6a4SAndroid Build Coastguard Worker elf_bin 20*bb4ee6a4SAndroid Build Coastguard Worker .write_all(elf_bytes) 21*bb4ee6a4SAndroid Build Coastguard Worker .expect("failed to write elf to tempfile"); 22*bb4ee6a4SAndroid Build Coastguard Worker elf_bin 23*bb4ee6a4SAndroid Build Coastguard Worker } 24*bb4ee6a4SAndroid Build Coastguard Worker 25*bb4ee6a4SAndroid Build Coastguard Worker fuzz_target!(|bytes| { 26*bb4ee6a4SAndroid Build Coastguard Worker let mut kimage = make_elf_bin(bytes); 27*bb4ee6a4SAndroid Build Coastguard Worker let mem = GuestMemory::new(&[(GuestAddress(0), MEM_SIZE)]).unwrap(); 28*bb4ee6a4SAndroid Build Coastguard Worker let _ = kernel_loader::load_elf32(&mem, GuestAddress(0), &mut kimage, 0); 29*bb4ee6a4SAndroid Build Coastguard Worker let _ = kernel_loader::load_elf64(&mem, GuestAddress(0), &mut kimage, 0); 30*bb4ee6a4SAndroid Build Coastguard Worker }); 31