summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-09-18 13:38:37 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2015-09-18 13:38:37 (GMT)
commit3abf44e48f973d5ffba779471a6c4dab00be2f77 (patch)
tree446c91f3134077bef4f0ff1879ff14744b27990a /configure.ac
parent258f17c96d2537050b9a3a5ae42b5fdaa1e80224 (diff)
downloadcpython-3abf44e48f973d5ffba779471a6c4dab00be2f77.zip
cpython-3abf44e48f973d5ffba779471a6c4dab00be2f77.tar.gz
cpython-3abf44e48f973d5ffba779471a6c4dab00be2f77.tar.bz2
Issue #25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom()
function instead of the getentropy() function. The getentropy() function is blocking to generate very good quality entropy, os.urandom() doesn't need such high-quality entropy.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac31
1 files changed, 28 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index 668234d..180a421 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5111,11 +5111,11 @@ AC_LINK_IFELSE(
#include <sys/syscall.h>
int main() {
- const int flags = 0;
char buffer[1];
- int n;
+ const size_t buflen = sizeof(buffer);
+ const int flags = 0;
/* ignore the result, Python checks for ENOSYS at runtime */
- (void)syscall(SYS_getrandom, buffer, sizeof(buffer), flags);
+ (void)syscall(SYS_getrandom, buffer, buflen, flags);
return 0;
}
]])
@@ -5127,6 +5127,31 @@ if test "$have_getrandom_syscall" = yes; then
[Define to 1 if the Linux getrandom() syscall is available])
fi
+# check if the getrandom() function is available
+# the test was written for the Solaris function of <sys/random.h>
+AC_MSG_CHECKING(for the getrandom() function)
+AC_LINK_IFELSE(
+[
+ AC_LANG_SOURCE([[
+ #include <sys/random.h>
+
+ int main() {
+ char buffer[1];
+ const size_t buflen = sizeof(buffer);
+ const int flags = 0;
+ /* ignore the result, Python checks for ENOSYS at runtime */
+ (void)getrandom(buffer, buflen, flags);
+ return 0;
+ }
+ ]])
+],[have_getrandom=yes],[have_getrandom=no])
+AC_MSG_RESULT($have_getrandom)
+
+if test "$have_getrandom" = yes; then
+ AC_DEFINE(HAVE_GETRANDOM, 1,
+ [Define to 1 if the getrandom() function is available])
+fi
+
# generate output files
AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh)
AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])