Add and use GETENTROPY_MAX from POSIX 2024. Change-Id: I2f9988b7c2ca93e84b0609140163f7af7279310a
diff --git a/libc/bionic/getentropy.cpp b/libc/bionic/getentropy.cpp index 9c93e71..d06bdd6 100644 --- a/libc/bionic/getentropy.cpp +++ b/libc/bionic/getentropy.cpp
@@ -28,6 +28,7 @@ #include <errno.h> #include <fcntl.h> +#include <limits.h> #include <sys/random.h> #include <unistd.h> @@ -50,7 +51,7 @@ } int getentropy(void* buffer, size_t buffer_size) { - if (buffer_size > 256) { + if (buffer_size > GETENTROPY_MAX) { errno = EIO; return -1; }
diff --git a/libc/include/limits.h b/libc/include/limits.h index 3220415..cb17563 100644 --- a/libc/include/limits.h +++ b/libc/include/limits.h
@@ -60,6 +60,9 @@ /* Many of the POSIX limits come from the kernel. */ #include <linux/limits.h> +/** Maximum buffer size for getentropy(). */ +#define GETENTROPY_MAX 256 + /** Maximum number of positional arguments in a printf()/scanf() format string. */ #define NL_ARGMAX 9 /** Maximum number of bytes in a $LANG name. */
diff --git a/tests/headers/posix/limits_h.c b/tests/headers/posix/limits_h.c index 4a076bb..0605136 100644 --- a/tests/headers/posix/limits_h.c +++ b/tests/headers/posix/limits_h.c
@@ -194,6 +194,10 @@ MACRO(USHRT_MAX); MACRO(WORD_BIT); +#if defined(__BIONIC__) + MACRO(GETENTROPY_MAX); +#endif + MACRO(NL_ARGMAX); MACRO(NL_LANGMAX); MACRO(NL_MSGMAX);
diff --git a/tests/limits_test.cpp b/tests/limits_test.cpp index 64d9a33..e7bb927 100644 --- a/tests/limits_test.cpp +++ b/tests/limits_test.cpp
@@ -23,6 +23,9 @@ ASSERT_EQ(8 * static_cast<int>(sizeof(int)), WORD_BIT); ASSERT_EQ(2048, LINE_MAX); ASSERT_EQ(20, NZERO); +#if defined(__BIONIC__) + ASSERT_GE(GETENTROPY_MAX, 256); +#endif #if !defined(MB_LEN_MAX) #error MB_LEN_MAX #endif