authorgravatar for nia@netbsd.orgnia <nia@netbsd.org> 2020-05-01 17:22:27+01:00
committergravatar for nia@netbsd.orgnia <nia@netbsd.org> 2020-05-01 17:22:27+01:00
log14a954f3507d97e1a6e6c995f3e4d3db76c64b3d
treebfb304d239f46244890ebc29f02ed0105d626b25
parentb23a87953a7a4030af3d9acf8deacb85162dd275

Add arc4random_buf() in NetBSD libc, use it to implement getrandom()


2 files changed, 5 insertions(+), 0 deletions(-)

lib/std/c/netbsd.zig+1
......@@ -9,6 +9,7 @@ pub const _errno = __errno;
99pub const dl_iterate_phdr_callback = extern fn (info: *dl_phdr_info, size: usize, data: ?*c_void) c_int;
1010pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*c_void) c_int;
1111
12pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void;
1213pub extern "c" fn __fstat50(fd: fd_t, buf: *Stat) c_int;
1314pub extern "c" fn __stat50(path: [*:0]const u8, buf: *Stat) c_int;
1415pub extern "c" fn __clock_gettime50(clk_id: c_int, tp: *timespec) c_int;
lib/std/os.zig+4
......@@ -153,6 +153,10 @@ pub fn getrandom(buffer: []u8) GetRandomError!void {
153153 }
154154 return;
155155 }
156 if (builtin.os.tag == .netbsd) {
157 netbsd.arc4random_buf(buffer.ptr, buffer.len);
158 return;
159 }
156160 if (builtin.os.tag == .wasi) {
157161 switch (wasi.random_get(buffer.ptr, buffer.len)) {
158162 0 => return,