Guest User

Untitled

a guest
Jul 19th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.57 KB | None | 0 0
  1. extern crate memmap;
  2.  
  3. use memmap::MmapOptions;
  4.  
  5. fn main() -> Result<(), std::io::Error> {
  6. let data: Vec<u8> = vec![184, 164, 1, 0, 0, 195];
  7.  
  8. let mut mmap = MmapOptions::new().len(data.len()).map_anon()?;
  9. mmap.copy_from_slice(data.as_slice());
  10. // works
  11. let mmap2 = mmap.make_exec()?;
  12. let testfn = unsafe { std::mem::transmute::<*const u8, extern "C" fn() -> i32>(mmap2.as_ptr()) };
  13. // doesn't work
  14. // let testfn = unsafe { std::mem::transmute::<*const u8, extern "C" fn() -> i32>(mmap.make_exec()?.as_ptr()) };
  15. println!("{}", testfn());
  16. Ok(())
  17. }
Add Comment
Please, Sign In to add comment