diff options
author | Gregory P. Smith <greg@krypto.org> | 2018-12-30 23:42:32 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-30 23:42:32 (GMT) |
commit | 387512c7ecde6446f2e29408af2e16b9fc043807 (patch) | |
tree | 66e991863076343981c7577cdbf2434449322f55 /configure.ac | |
parent | 1b29c03c95dbffa05f2bac0f8f1a36b21606a504 (diff) | |
download | cpython-387512c7ecde6446f2e29408af2e16b9fc043807.zip cpython-387512c7ecde6446f2e29408af2e16b9fc043807.tar.gz cpython-387512c7ecde6446f2e29408af2e16b9fc043807.tar.bz2 |
bpo-28503: Use crypt_r() when available instead of crypt() (GH-11373)
Use crypt_r() when available instead of crypt() in the crypt module.
As a nice side effect: This also avoids a memory sanitizer flake as clang msan doesn't know about crypt's internal libc allocated buffer.
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 349c927..bd09a9c 100644 --- a/configure.ac +++ b/configure.ac @@ -3818,6 +3818,23 @@ AC_CHECK_FUNCS(gettimeofday, ]) ) +# We search for both crypt and crypt_r as one or the other may be defined +# This gets us our -lcrypt in LIBS when required on the target platform. +AC_SEARCH_LIBS(crypt, crypt) +AC_SEARCH_LIBS(crypt_r, crypt) + +AC_CHECK_FUNC(crypt_r, + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#define _GNU_SOURCE /* Required for crypt_r()'s prototype in glibc. */ +#include <crypt.h> +]], [[ +struct crypt_data d; +char *r = crypt_r("", "", &d); +]])], + [AC_DEFINE(HAVE_CRYPT_R, 1, [Define if you have the crypt_r() function.])], + []) +) + AC_CHECK_FUNCS(clock_gettime, [], [ AC_CHECK_LIB(rt, clock_gettime, [ LIBS="$LIBS -lrt" |