ID:               45383
 Updated by:       [email protected]
 Reported By:      beckera at softrends dot com
-Status:           Open
+Status:           Feedback
 Bug Type:         dBase related
 Operating System: Linux (CentOS 5.1)
 PHP Version:      5.2.6
 New Comment:

Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:

  http://windows.php.net/snapshots/




Previous Comments:
------------------------------------------------------------------------

[2008-06-27 21:04:42] beckera at softrends dot com

Description:
------------
Running CentOS 5.1 w/ Apache 2.2.3. Set Apache's umask to 002, ran a
dbase create function to create a new dbase file.  When finished, the
file permissions were 644 instead of 664.  Initially found this under
version 5.1.6, tracked it down in source code, then checked 5.2.6 and
the problem is still there.

In the source file php-5.2.6/ext/dbase/dbase.c, find the function 
"dbase_create".  About 30 lines into the function there is a function
call  VCWD_OPEN_MODE(Z_STRVAL_PP(filename), O_BINARY|O_RDWR|O_CREAT,
0644) which is responsible for creating the new file.

The error is in the hard-coded third parameter 0644.  This will fail to
create the file with expected permissions unless umask is set to 022
(which is normally the default).

This code needs to obtain the umask in effect at the time of the
function call, compute the correct mode value, and use that in place of
the current hard value 0644.

CentOS 5 PHP is not compiled with dbase enabled by default.  I obtained
and installed the source RPM, modified the spec file to 
add " --enable-dbase" to the options used both for building the 
command-line and Apache module forms of PHP.




------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=45383&edit=1

Reply via email to