"_NSGetArgv" => {
this.write_scalar(Scalar::Ptr(this.machine.argv.unwrap()), dest)?;
},
+ "SecRandomCopyBytes" => {
+ let len = this.read_scalar(args[1])?.to_usize(this)?;
+ let ptr = this.read_scalar(args[2])?.to_ptr()?;
+
+ if len > 0 {
+ let data = gen_random(this, len as usize)?;
+ this.memory_mut().get_mut(ptr.alloc_id)?
+ .write_bytes(tcx, ptr, &data)?;
+ }
+
+ this.write_null(dest)?;
+ }
// Windows API stubs.
// HANDLE = isize
#[test]
fn entropy_rng() {
- #[cfg(not(target_os="macos"))] // FIXME entropy does not work on macOS
- // (Not disabling the entire test as that would change the output.)
- {
- // Use this opportunity to test querying the RNG (needs an external crate, hence tested here and not in the compiletest suite)
- let mut rng = SmallRng::from_entropy();
- let _val = rng.gen::<i32>();
+ // Use this opportunity to test querying the RNG (needs an external crate, hence tested here and not in the compiletest suite)
+ let mut rng = SmallRng::from_entropy();
+ let _val = rng.gen::<i32>();
- // Also try per-thread RNG.
- let mut rng = rand::thread_rng();
- let _val = rng.gen::<i32>();
- }
+ // Also try per-thread RNG.
+ let mut rng = rand::thread_rng();
+ let _val = rng.gen::<i32>();
}
// A test that won't work on miri