ID:               49767
 Updated by:       [email protected]
 Reported By:      mb at smartftp dot com
-Status:           Assigned
+Status:           Closed
 Bug Type:         Reproducible crash
 Operating System: win32 only -Windows 2008 SP2 x86
 PHP Version:      5.3.0
 Assigned To:      pajoye
 New Comment:

This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

This should be fixed now. 


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

[2009-10-13 22:25:45] [email protected]

Bug #47627 marked duplicate of this.

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

[2009-10-04 19:35:54] mb at smartftp dot com

I have also sent you the crash report by email. Open the .mht file (RS
removed the .mth extension for some reason) with IE.

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

[2009-10-04 19:25:46] [email protected]

I corrected myself about the script by asking for the full bt (the one
on RS was not readable).

The diagnostic sounds good, I have to reproduce it to be sure. Assigned
to me.

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

[2009-10-04 17:28:20] mb at smartftp dot com

I don't think you need a script. A little bit of time and motivation
would do as well:

Please review your code:

File: main.c
PHPAPI int php_execute_script(zend_file_handle *primary_file
TSRMLS_DC)
{
...
#ifdef PHP_WIN32
                UpdateIniFromRegistry(primary_file->filename TSRMLS_CC);
#endif
..
}

Then:
File: registry.c
void UpdateIniFromRegistry(char *path TSRMLS_DC)
{
-> BUG: missing check for argument

// here comes the check for Per Directory registry value. If it is not
found the function exists and never comes to the estrdup and hence no
crash.
...
        orig_path = path = estrdup(path);
..
}

The problem only happens if the "Per Directory Values" registry key is
present. In this case estrdup(NULL) is called and you get the crash.

So I think the argument (path) should be checked for NULL. And when I
look at the main.c I also noticed that you sometimes expect the
primary_file->filename to be null, so maybe you add a check before the
UpdateIniFromRegistry() call.

Proposed FIX:
#ifdef PHP_WIN32
if(primary_file->filename)
{
                UpdateIniFromRegistry(primary_file->filename TSRMLS_CC);
}
#endif

+ Add argument check for UpdateIniFromRegistry

Workaround:
Remove "Per Directories Values" registry key.

Regards,
Mat

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

[2009-10-04 17:23:34] [email protected]

Btw, can you also zip the report and send it to me or provide a link to
the zip (pls not one of these radidshare thing) :)

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/49767

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

Reply via email to