diff options
author | Gregory P. Smith <greg@krypto.org> | 2018-12-30 15:42:32 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-30 15:42:32 -0800 |
commit | 387512c7ecde6446f2e29408af2e16b9fc043807 (patch) | |
tree | 66e991863076343981c7577cdbf2434449322f55 /Include/Python.h | |
parent | 1b29c03c95dbffa05f2bac0f8f1a36b21606a504 (diff) | |
download | cpython-git-387512c7ecde6446f2e29408af2e16b9fc043807.tar.gz |
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 'Include/Python.h')
-rw-r--r-- | Include/Python.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Include/Python.h b/Include/Python.h index cb24c8d33e..aa60175f52 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -36,7 +36,17 @@ #include <unistd.h> #endif #ifdef HAVE_CRYPT_H +#if defined(HAVE_CRYPT_R) && !defined(_GNU_SOURCE) +/* Required for glibc to expose the crypt_r() function prototype. */ +# define _GNU_SOURCE +# define _Py_GNU_SOURCE_FOR_CRYPT +#endif #include <crypt.h> +#ifdef _Py_GNU_SOURCE_FOR_CRYPT +/* Don't leak the _GNU_SOURCE define to other headers. */ +# undef _GNU_SOURCE +# undef _Py_GNU_SOURCE_FOR_CRYPT +#endif #endif /* For size_t? */ |