summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-09-12 16:36:05 -0700
committerGitHub <noreply@github.com>2018-09-12 16:36:05 -0700
commit98344a4f2f09ddae295352ec54fae6388446eeaf (patch)
treef66682c665d5298abdd9bb2dc60caae5fa5040e7
parent0aef909d630ff40614cde0c58796a8bdf66c67eb (diff)
downloadcpython-git-98344a4f2f09ddae295352ec54fae6388446eeaf.tar.gz
closes bpo-34652: Always disable lchmod on Linux. (GH-9234)
(cherry picked from commit 40caa05fa4d1810a1a6bfc34e0ec930c351089b7) Co-authored-by: Benjamin Peterson <benjamin@python.org>
-rw-r--r--Misc/NEWS.d/next/Library/2018-09-12-14-46-51.bpo-34652.Rt1m1b.rst1
-rwxr-xr-xconfigure11
-rw-r--r--configure.ac7
3 files changed, 19 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/Library/2018-09-12-14-46-51.bpo-34652.Rt1m1b.rst b/Misc/NEWS.d/next/Library/2018-09-12-14-46-51.bpo-34652.Rt1m1b.rst
new file mode 100644
index 0000000000..cbdd7e0ec6
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-09-12-14-46-51.bpo-34652.Rt1m1b.rst
@@ -0,0 +1 @@
+Ensure :func:`os.lchmod` is never defined on Linux.
diff --git a/configure b/configure
index 7e39458727..1219cb9ffa 100755
--- a/configure
+++ b/configure
@@ -11354,6 +11354,17 @@ fi
done
+# Force lchmod off for Linux. Linux disallows changing the mode of symbolic
+# links. Some libc implementations have a stub lchmod implementation that always
+# returns an error.
+if test "$MACHDEP" != linux; then
+ ac_fn_c_check_func "$LINENO" "lchmod" "ac_cv_func_lchmod"
+if test "x$ac_cv_func_lchmod" = xyes; then :
+
+fi
+
+fi
+
ac_fn_c_check_decl "$LINENO" "dirfd" "ac_cv_have_decl_dirfd" "#include <sys/types.h>
#include <dirent.h>
"
diff --git a/configure.ac b/configure.ac
index 2b8aa4d592..d7e0de3a32 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3519,6 +3519,13 @@ AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
truncate uname unlinkat unsetenv utimensat utimes waitid waitpid wait3 wait4 \
wcscoll wcsftime wcsxfrm wmemcmp writev _getpty)
+# Force lchmod off for Linux. Linux disallows changing the mode of symbolic
+# links. Some libc implementations have a stub lchmod implementation that always
+# returns an error.
+if test "$MACHDEP" != linux; then
+ AC_CHECK_FUNC(lchmod)
+fi
+
AC_CHECK_DECL(dirfd,
AC_DEFINE(HAVE_DIRFD, 1,
Define if you have the 'dirfd' function or macro.), ,