Module Name:    src
Committed By:   nia
Date:           Thu Apr 30 17:36:06 UTC 2020

Modified Files:
        src/sys/kern: subr_cprng.c

Log Message:
Make kern.arandom truncate the output instead of failing with ETOOBIG
when the requested data exceeds 256 bytes in size. The actual size of
the returned data is output to oldlenp.

This matches FreeBSD's behaviour and seems to be more in line with
what software in the wild expects.

"sounds reasonble" - Riastradh


To generate a diff of this commit:
cvs rdiff -u -r1.36 -r1.37 src/sys/kern/subr_cprng.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/subr_cprng.c
diff -u src/sys/kern/subr_cprng.c:1.36 src/sys/kern/subr_cprng.c:1.37
--- src/sys/kern/subr_cprng.c:1.36	Thu Apr 30 03:28:18 2020
+++ src/sys/kern/subr_cprng.c	Thu Apr 30 17:36:06 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_cprng.c,v 1.36 2020/04/30 03:28:18 riastradh Exp $	*/
+/*	$NetBSD: subr_cprng.c,v 1.37 2020/04/30 17:36:06 nia Exp $	*/
 
 /*-
  * Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -52,7 +52,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_cprng.c,v 1.36 2020/04/30 03:28:18 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_cprng.c,v 1.37 2020/04/30 17:36:06 nia Exp $");
 
 #include <sys/types.h>
 #include <sys/cprng.h>
@@ -172,7 +172,7 @@ sysctl_kern_arandom(SYSCTLFN_ARGS)
 	 * the past, so let's not break compatibility.
 	 */
 	if (*oldlenp > 256)	/* size_t, so never negative */
-		return E2BIG;
+		*oldlenp = 256;
 
 	/* Generate data.  */
 	cprng_strong(user_cprng, buf, *oldlenp, 0);

Reply via email to