summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/kern_mib.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/kern/kern_mib.c b/sys/kern/kern_mib.c
index 74f05f9..b8ce527 100644
--- a/sys/kern/kern_mib.c
+++ b/sys/kern/kern_mib.c
@@ -154,14 +154,18 @@ SYSCTL_INT(_hw, HW_PAGESIZE, pagesize, CTLFLAG_RD,
static int
sysctl_kern_arnd(SYSCTL_HANDLER_ARGS)
{
- u_long val;
-
- arc4rand(&val, sizeof(val), 0);
- return (sysctl_handle_long(oidp, &val, 0, req));
+ char buf[256];
+ size_t len;
+
+ len = req->oldlen;
+ if (len > sizeof(buf))
+ len = sizeof(buf);
+ arc4rand(buf, len, 0);
+ return (SYSCTL_OUT(req, buf, len));
}
-SYSCTL_PROC(_kern, KERN_ARND, arandom, CTLFLAG_RD,
- 0, 0, sysctl_kern_arnd, "L", "arc4rand");
+SYSCTL_PROC(_kern, KERN_ARND, arandom, CTLTYPE_OPAQUE | CTLFLAG_RD,
+ NULL, 0, sysctl_kern_arnd, "", "arc4rand");
static int
sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
OpenPOWER on IntegriCloud