aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2024-07-15 20:17:47 +0000
committerKyle Evans <kevans@FreeBSD.org>2024-07-15 20:17:47 +0000
commit5862c891bb7c588aa00538d85eb26ffe77d3f709 (patch)
tree12e9d353093efe661363a5142a47e31501d9fc19 /sys
parent9cc06bf7aa2846c35483de567779bb8afc289f53 (diff)
kern: zero out stack buffer after copying out random bits
The kern.arandom sysctl handler uses an intermediate buffer on the stack to hold random data that it subsequently copies out to the sysctl request. Err on the side of caution and zero out the stack buffer after we're done with it to avoid a potential entropy leak later on. Reviewed by: cem, emaste, markj MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D45978
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_mib.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/kern_mib.c b/sys/kern/kern_mib.c
index 5724ed3f6932..fe6e49865682 100644
--- a/sys/kern/kern_mib.c
+++ b/sys/kern/kern_mib.c
@@ -182,10 +182,14 @@ sysctl_kern_arnd(SYSCTL_HANDLER_ARGS)
{
char buf[256];
size_t len;
+ int error;
len = MIN(req->oldlen, sizeof(buf));
read_random(buf, len);
- return (SYSCTL_OUT(req, buf, len));
+
+ error = SYSCTL_OUT(req, buf, len);
+ explicit_bzero(buf, len);
+ return (error);
}
SYSCTL_PROC(_kern, KERN_ARND, arandom,