From owner-dev-commits-src-branches@freebsd.org Thu Mar 25 07:04:39 2021 Return-Path: Delivered-To: dev-commits-src-branches@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D75585B1A1D; Thu, 25 Mar 2021 07:04:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4F5bh75myKz4f3y; Thu, 25 Mar 2021 07:04:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B4DDD22EA4; Thu, 25 Mar 2021 07:04:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 12P74du9095709; Thu, 25 Mar 2021 07:04:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 12P74dNw095708; Thu, 25 Mar 2021 07:04:39 GMT (envelope-from git) Date: Thu, 25 Mar 2021 07:04:39 GMT Message-Id: <202103250704.12P74dNw095708@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Lawrence Stewart Subject: git: 2a878f01f22f - releng/13.0 - random(9): Restore historical [0, 2^31-1] output range and related man documention. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: lstewart X-Git-Repository: src X-Git-Refname: refs/heads/releng/13.0 X-Git-Reftype: branch X-Git-Commit: 2a878f01f22fd7a238078305813e48597bbcbba0 Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-branches@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commits to the stable branches of the FreeBSD src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Mar 2021 07:04:39 -0000 The branch releng/13.0 has been updated by lstewart: URL: https://cgit.FreeBSD.org/src/commit/?id=2a878f01f22fd7a238078305813e48597bbcbba0 commit 2a878f01f22fd7a238078305813e48597bbcbba0 Author: Lawrence Stewart AuthorDate: 2021-03-24 04:25:49 +0000 Commit: Lawrence Stewart CommitDate: 2021-03-25 07:00:55 +0000 random(9): Restore historical [0,2^31-1] output range and related man documention. Commit SVN r364219 / Git 8a0edc914ffd changed random(9) to be a shim around prng32(9) and inadvertently caused random(9) to begin returning numbers in the range [0,2^32-1] instead of [0,2^31-1], where the latter has been the documented range for decades. The increased output range has been identified as the source of numerous bugs in code written against the historical output range e.g. ipfw "prob" rules and stats(3) are known to be affected, and a non-exhaustive audit of the tree identified other random(9) consumers which are also likely affected. As random(9) is deprecated and slated for eventual removal in 14.0, consumers should gradually be audited and migrated to prng(9). Submitted by: Loic Prylli Obtained from: Netflix Reviewed by: cem, delphij, imp MFC after: 1 day MFC to: stable/13, releng/13.0 Differential Revision: https://reviews.freebsd.org/D29385 Approved by: re (delphij) (cherry picked from commit dbbf3e3f37d67d3eae0931855f8b62b9b299b80a) --- share/man/man9/random.9 | 25 ++++++++++++++----------- sys/libkern/random.c | 2 +- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/share/man/man9/random.9 b/share/man/man9/random.9 index fb5f2156df16..1c5f962b1363 100644 --- a/share/man/man9/random.9 +++ b/share/man/man9/random.9 @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" " -.Dd December 26, 2019 +.Dd March 22, 2021 .Dt RANDOM 9 .Os .Sh NAME @@ -132,17 +132,13 @@ If the function is interrupted before the random device is seeded, no data is returned. .Pp The deprecated -.Xr random 9 -function will produce a sequence of pseudorandom numbers using a similar weak -linear congruential generator as -.Xr rand 3 -(the 1988 Park-Miller LCG). +.Fn random +function will return a 31-bit value. It is obsolete and scheduled to be removed in -.Fx 13.0 . -It is strongly advised that the -.Xr random 9 -function not be used to generate random numbers. -See +.Fx 14.0 . +Consider +.Xr prng 9 +instead and see .Sx SECURITY CONSIDERATIONS . .Sh RETURN VALUES The @@ -167,6 +163,13 @@ the number of bytes placed in .Fn read_random_uio returns zero when successful, otherwise an error code is returned. +.Pp +.Fn random +returns numbers +in the range from 0 to +.if t 2\u\s731\s10\d\(mi1. +.if n (2**31)\(mi1. + .Sh ERRORS .Fn read_random_uio may fail if: diff --git a/sys/libkern/random.c b/sys/libkern/random.c index 23a8887fa49b..0bdfbc168409 100644 --- a/sys/libkern/random.c +++ b/sys/libkern/random.c @@ -45,5 +45,5 @@ __FBSDID("$FreeBSD$"); u_long random(void) { - return (prng32()); + return (prng32() & 0x7fffffff); }