changeset: 101436:783c1b8cdddb parent: 101434:3811995aad73 parent: 101435:13c5135d8467 user: Victor Stinner date: Thu May 19 16:48:06 2016 +0200 files: Misc/ACKS Misc/NEWS Python/fileutils.c description: Merge 3.5 (issue #27057) diff -r 3811995aad73 -r 783c1b8cdddb Misc/ACKS --- a/Misc/ACKS Wed May 18 15:54:24 2016 -0700 +++ b/Misc/ACKS Thu May 19 16:48:06 2016 +0200 @@ -110,6 +110,7 @@ Robin Becker Torsten Becker Bill Bedford +Michał Bednarski Ian Beer Stefan Behnel Reimer Behrends diff -r 3811995aad73 -r 783c1b8cdddb Misc/NEWS --- a/Misc/NEWS Wed May 18 15:54:24 2016 -0700 +++ b/Misc/NEWS Thu May 19 16:48:06 2016 +0200 @@ -297,6 +297,10 @@ Library ------- +- Issue #27057: Fix os.set_inheritable() on Android, ioctl() is blocked by + SELinux and fails with EACCESS. The function now falls back to fcntl(). + Patch written by Michał Bednarski. + - Issue #27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure! - Issue #27031: Removed dummy methods in Tkinter widget classes: tk_menuBar() diff -r 3811995aad73 -r 783c1b8cdddb Python/fileutils.c --- a/Python/fileutils.c Wed May 18 15:54:24 2016 -0700 +++ b/Python/fileutils.c Thu May 19 16:48:06 2016 +0200 @@ -860,7 +860,7 @@ return 0; } - if (errno != ENOTTY) { + if (errno != ENOTTY && errno != EACCES) { if (raise) PyErr_SetFromErrno(PyExc_OSError); return -1; @@ -869,7 +869,12 @@ /* Issue #22258: Here, ENOTTY means "Inappropriate ioctl for device". The ioctl is declared but not supported by the kernel. Remember that ioctl() doesn't work. It is the case on - Illumos-based OS for example. */ + Illumos-based OS for example. + + Issue #27057: When SELinux policy disallows ioctl it will fail + with EACCES. While FIOCLEX is safe operation it may be + unavailable because ioctl was denied altogether. + This can be the case on Android. */ ioctl_works = 0; } /* fallback to fcntl() if ioctl() does not work */