#40079 [Opn->Asn]: php_get_current_user() not thread safe
| From: | iliaa@php.net | Date: | Tue, 09 Jan 2007 18:09:35 +0000 |
| Subject: | #40079 [Opn->Asn]: php_get_current_user() not thread safe | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-107382@lists.php.net to get a copy of this message | ||
ID: 40079
Updated by: iliaa@php.net
Reported By: wharmby at uk dot ibm dot com
-Status: Open
+Status: Assigned
Bug Type: Scripting Engine problem
Operating System: Linux RHEL4
PHP Version: 5CVS-2007-01-09 (snap)
-Assigned To:
+Assigned To: iliaa
Previous Comments:
------------------------------------------------------------------------
[2007-01-09 17:58:59] wharmby at uk dot ibm dot com
Description:
------------
The current implementation of php_get_current_user() uses
the non-reentrant getpwuid() rather than the reentrant
getpwuid_r(). Therefore issuing on Linux in a ZTS enabled
build could lead to unpredictable/undesirable results. the code should
use the re-entrant version if it is available.
The following patch which were built against the latest
snapshot (Jan 9 2007, 1330 GMT) modifies the code in
main/safe_mode.c to use the re-entrant getpwuid_r if its
available:
http://pastebin.ca/311144
Following makes necessary associated change to configure.in:
http://pastebin.ca/311140
Fix tested on Linux RHEL with mysql extension enabled and
sql.safe_mode=On in php.ini. The modified code can then easily be
invoked by issuing mysql_connect().
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
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=40079&edit=1