ish/kernel/random.c
2018-10-05 10:41:42 -07:00

19 lines
457 B
C

#include <fcntl.h>
#include "kernel/calls.h"
dword_t sys_getrandom(addr_t buf_addr, dword_t len, dword_t flags) {
if (len > 256)
return _EIO;
char buf[len];
int dev_random = open("/dev/urandom", O_RDONLY);
if (dev_random < 0)
return _EIO;
int err = read(dev_random, buf, len);
close(dev_random);
if (err < 0)
return _EIO;
if (user_write(buf_addr, buf, len))
return _EFAULT;
return len;
}