Implementation of PHP functions chown() and chgrp() not thread safe.
| Bug #39648 | Implementation of PHP functions chown() and chgrp() not thread safe. | ||||
|---|---|---|---|---|---|
| Submitted: | 2006-11-27 17:05 UTC | Modified: | 2006-11-30 11:27 UTC | ||
| From: | wharmby at uk dot ibm dot com | Assigned: | iliaa (profile) | ||
| Status: | Closed | Package: | Unknown/Other Function | ||
| PHP Version: | 5CVS-2006-11-27 (snap) | OS: | Linux RHEL4 | ||
| Private report: | No | CVE-ID: | None | ||
[2006-11-27 17:05 UTC] wharmby at uk dot ibm dot com
Description:
------------
The current implementation of the chown() and chgrp()
functions on Linux use the non-reentrant getpwnam() and
getgrnam() C library calls respectively rather than the
reentrant getpwnam_r() and getgrnam_r(). Therefore using
either chown() or chgrp() on Linux in a ZTS enabled build
could lead to unpredictable/undesirable results.
The following patch, which was built against the latest snapshot (Nov 27th, 2006, 0730 GMT) modifies the code in
ext/standard/filestat.c to use the reentrant versions of
these functions and so make these 2 functions thread safe:
http://pastebin.ca/259657
However, I am concerned that this patch relies on the C
library supporting the POSIX.1 functions getpwnam_r(),
getgrnam_r() and sysconf(). These are all implemented by
GNU libc but are there other C libraries used to build PHP
which may not have the necessary support ? Or is it
reasonable to assume that all C libraries used when buiding
PHP will be POSIX.1 compliant ?
N.B There are other uses of these non-reentrant functions in
the PHP code base (e.g posix.c and fopen_wrappers.c) and I
m happy to produce the necessary patches to fix these uses
if this fix proves satisfactory.
Andy Wharmby
IBM United Kingdom Limited
Reproduce code:
---------------
---------------
Problem found by code inspection. As with most thread safety issues difficult to produce a simple testcase which will show a reproducible crash but current Linux executable is clearly
not reentrant.
Expected result:
----------------
N/A
Actual result:
--------------
N/A
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2006-11-29 23:42 UTC] iliaa@php.net
[2006-11-30 11:27 UTC] wharmby at uk dot ibm dot com