git: 6789b9f63023 - stable/14 - libc: Fix getentropy POSIX 2024 conformance issues
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 20 Feb 2025 14:13:52 UTC
The branch stable/14 has been updated by emaste:
URL: https://cgit.FreeBSD.org/src/commit/?id=6789b9f630236a9bc0e7b4f2b930c1048c5312ef
commit 6789b9f630236a9bc0e7b4f2b930c1048c5312ef
Author: Ed Maste <emaste@FreeBSD.org>
AuthorDate: 2024-11-16 15:14:21 +0000
Commit: Ed Maste <emaste@FreeBSD.org>
CommitDate: 2025-02-20 14:13:25 +0000
libc: Fix getentropy POSIX 2024 conformance issues
GETENTROPY_MAX should be defined in limits.h. EINVAL is the return
value for buflen > GETENTROPY_MAX.
PR: 282783
Reviewed by: markj, asomers, jhb
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D47689
---
include/limits.h | 4 ++++
lib/libc/gen/getentropy.3 | 14 ++++----------
lib/libc/gen/getentropy.c | 5 +++--
3 files changed, 11 insertions(+), 12 deletions(-)
diff --git a/include/limits.h b/include/limits.h
index 73036ca3ad7b..1a3c872b1ffb 100644
--- a/include/limits.h
+++ b/include/limits.h
@@ -139,6 +139,10 @@
#define MB_LEN_MAX 6 /* 31-bit UTF-8 */
+#if __POSIX_VISIBLE >= 202405
+#define GETENTROPY_MAX 256
+#endif
+
#include <sys/limits.h>
#if __POSIX_VISIBLE
diff --git a/lib/libc/gen/getentropy.3 b/lib/libc/gen/getentropy.3
index 5bbbc80e2414..5f7ee32ebbfc 100644
--- a/lib/libc/gen/getentropy.3
+++ b/lib/libc/gen/getentropy.3
@@ -15,7 +15,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd November 20, 2024
+.Dd January 17, 2025
.Dt GETENTROPY 3
.Os
.Sh NAME
@@ -60,8 +60,8 @@ The
.Fa buf
parameter points to an
invalid address.
-.It Bq Er EIO
-Too many bytes requested, or some other fatal error occurred.
+.It Bq Er EINVAL
+Too many bytes requested.
.El
.Sh SEE ALSO
.Xr getrandom 2 ,
@@ -69,7 +69,7 @@ Too many bytes requested, or some other fatal error occurred.
.Xr random 4
.Sh STANDARDS
.Fn getentropy
-nearly conforms to
+conforms to
.St -p1003.1-2024 .
.Sh HISTORY
The
@@ -80,9 +80,3 @@ The
.Fx
libc compatibility shim first appeared in
.Fx 12.0 .
-.Sh BUGS
-.In limits.h
-does not define
-.Dv GETENTROPY_MAX .
-Some error values do not match
-.St -p1003.1-2024 .
diff --git a/lib/libc/gen/getentropy.c b/lib/libc/gen/getentropy.c
index 060c2760bfad..5dffd91c6dee 100644
--- a/lib/libc/gen/getentropy.c
+++ b/lib/libc/gen/getentropy.c
@@ -31,6 +31,7 @@
#include <sys/sysctl.h>
#include <errno.h>
+#include <limits.h>
#include <signal.h>
#include <stdbool.h>
#include <stdlib.h>
@@ -110,8 +111,8 @@ getentropy(void *buf, size_t buflen)
ssize_t rd;
bool have_getrandom;
- if (buflen > 256) {
- errno = EIO;
+ if (buflen > GETENTROPY_MAX) {
+ errno = EINVAL;
return (-1);
}