From 61b978f540b761daf07339aa1ffff80d7bc497bb Mon Sep 17 00:00:00 2001 From: stratakis Date: Tue, 23 Jan 2018 16:11:24 +0100 Subject: [PATCH] bpo-32635: Fix a segfault when importing the crypt module with libxcrypt. (GH-5284) glibc is deprecating libcrypt in favor of libxcrypt, however python assumes that crypt.h will always be included. This change makes the header inclusion explicit when libxcrypt is present on the system. (cherry picked from commit e768c86ef442ef89004089a8a34ce5909ffb90f2) --- Include/Python.h | 3 +++ .../NEWS.d/next/Build/2018-01-23-15-33-40.bpo-32635.qHwIZy.rst | 2 ++ configure | 2 +- configure.ac | 2 +- pyconfig.h.in | 3 +++ 5 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2018-01-23-15-33-40.bpo-32635.qHwIZy.rst diff --git a/Include/Python.h b/Include/Python.h index 775412b8c4ef18..a9327b02c81f09 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -43,6 +43,9 @@ #ifdef HAVE_UNISTD_H #include #endif +#ifdef HAVE_CRYPT_H +#include +#endif /* For size_t? */ #ifdef HAVE_STDDEF_H diff --git a/Misc/NEWS.d/next/Build/2018-01-23-15-33-40.bpo-32635.qHwIZy.rst b/Misc/NEWS.d/next/Build/2018-01-23-15-33-40.bpo-32635.qHwIZy.rst new file mode 100644 index 00000000000000..d411890f5d884e --- /dev/null +++ b/Misc/NEWS.d/next/Build/2018-01-23-15-33-40.bpo-32635.qHwIZy.rst @@ -0,0 +1,2 @@ +Fix segfault of the crypt module when libxcrypt is provided instead of +libcrypt at the system. diff --git a/configure b/configure index 609b5c04fd2a6c..34773076f567cf 100755 --- a/configure +++ b/configure @@ -7035,7 +7035,7 @@ $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi -for ac_header in asm/types.h conio.h direct.h dlfcn.h errno.h \ +for ac_header in asm/types.h crypt.h conio.h direct.h dlfcn.h errno.h \ fcntl.h grp.h \ ieeefp.h io.h langinfo.h libintl.h poll.h process.h pthread.h \ shadow.h signal.h stdint.h stropts.h termios.h thread.h \ diff --git a/configure.ac b/configure.ac index 7243de205bee53..c6453402162091 100644 --- a/configure.ac +++ b/configure.ac @@ -1690,7 +1690,7 @@ dnl AC_MSG_RESULT($cpp_type) # checks for header files AC_HEADER_STDC -AC_CHECK_HEADERS(asm/types.h conio.h direct.h dlfcn.h errno.h \ +AC_CHECK_HEADERS(asm/types.h crypt.h conio.h direct.h dlfcn.h errno.h \ fcntl.h grp.h \ ieeefp.h io.h langinfo.h libintl.h poll.h process.h pthread.h \ shadow.h signal.h stdint.h stropts.h termios.h thread.h \ diff --git a/pyconfig.h.in b/pyconfig.h.in index 22dc2dba6d6779..11c4a66873c110 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -130,6 +130,9 @@ /* Define to 1 if you have the `copysign' function. */ #undef HAVE_COPYSIGN +/* Define to 1 if you have the header file. */ +#undef HAVE_CRYPT_H + /* Define to 1 if you have the `ctermid' function. */ #undef HAVE_CTERMID