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