Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern crate memmap;
- use memmap::MmapOptions;
- fn main() -> Result<(), std::io::Error> {
- let data: Vec<u8> = vec![184, 164, 1, 0, 0, 195];
- let mut mmap = MmapOptions::new().len(data.len()).map_anon()?;
- mmap.copy_from_slice(data.as_slice());
- // works
- let mmap2 = mmap.make_exec()?;
- let testfn = unsafe { std::mem::transmute::<*const u8, extern "C" fn() -> i32>(mmap2.as_ptr()) };
- // doesn't work
- // let testfn = unsafe { std::mem::transmute::<*const u8, extern "C" fn() -> i32>(mmap.make_exec()?.as_ptr()) };
- println!("{}", testfn());
- Ok(())
- }
Add Comment
Please, Sign In to add comment