Skip to content

Commit 4c82fbd

Browse files
authored
Merge pull request RustPython#3505 from coolreader18/sys_getrandom
Use syscall instead of the getrandom libc function
2 parents 24f9c04 + 318a152 commit 4c82fbd

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

vm/src/stdlib/posix.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1980,14 +1980,19 @@ pub mod module {
19801980
Ok(vm.ctx.new_int(written as u64).into())
19811981
}
19821982

1983+
#[cfg(target_os = "linux")]
1984+
unsafe fn sys_getrandom(buf: *mut libc::c_void, buflen: usize, flags: u32) -> isize {
1985+
libc::syscall(libc::SYS_getrandom, buf, buflen, flags as usize) as _
1986+
}
1987+
19831988
#[cfg(target_os = "linux")]
19841989
#[pyfunction]
19851990
fn getrandom(size: isize, flags: OptionalArg<u32>, vm: &VirtualMachine) -> PyResult<Vec<u8>> {
19861991
let size = usize::try_from(size)
19871992
.map_err(|_| vm.new_os_error(format!("Invalid argument for size: {}", size)))?;
19881993
let mut buf = Vec::with_capacity(size);
19891994
unsafe {
1990-
let len = libc::getrandom(
1995+
let len = sys_getrandom(
19911996
buf.as_mut_ptr() as *mut libc::c_void,
19921997
size,
19931998
flags.unwrap_or(0),

0 commit comments

Comments
 (0)