#42861 [Opn->Csd]: strtr() crashes when $from argument is empty string or null, with Unicode ON
| From: | tony2001@php.net | Date: | Mon, 21 Jan 2008 14:37:27 +0000 |
| Subject: | #42861 [Opn->Csd]: strtr() crashes when $from argument is empty string or null, with Unicode ON | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-121431@lists.php.net to get a copy of this message | ||
ID: 42861
Updated by: tony2001@php.net
Reported By: mahesh dot vemula at in dot ibm dot com
-Status: Open
+Status: Closed
Bug Type: Strings related
Operating System: RHEL4, Windows XP
PHP Version: 6CVS-2007-10-05 (snap)
New Comment:
This bug has been fixed in CVS.
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.
Previous Comments:
------------------------------------------------------------------------
[2008-01-21 13:09:26] felipe@php.net
I reproduced the problem.
Simple fix:
Index: ext/standard/string.c
===================================================================
RCS file: /repository/php-src/ext/standard/string.c,v
retrieving revision 1.662
diff -u -u -r1.662 string.c
--- ext/standard/string.c 16 Jan 2008 08:34:06 -0000 1.662
+++ ext/standard/string.c 21 Jan 2008 13:08:25 -0000
@@ -4443,7 +4443,7 @@
}
if (Z_TYPE_PP(str) == IS_UNICODE) {
- int outlen;
+ int outlen = 0;
UChar *outstr;
if (ac == 2) {
------------------------------------------------------------------------
[2007-11-23 00:28:49] felipe@php.net
Works fine. (php6.0-200711202130)
------------------------------------------------------------------------
[2007-10-05 06:48:46] mahesh dot vemula at in dot ibm dot com
Description:
------------
strtr() crashes on php6 with unicode ON , when $from argument is given
as any of the following:
empty string
Null
e.g:
var_dump( strtr("hello", array("" => "string") ) );
var_dump( strtr("hello", "", "string") );
This is applicable for PHP6 with Unicode.
Reproduce code:
---------------
<?php
var_dump( strtr("hello", array("" => "string") ) );
var_dump( strtr("hello", array('' => "string") ) );
var_dump( strtr("hello", array(null => "string") ) );
var_dump( strtr("hello", array(NULL => "string") ) );
var_dump( strtr("hello", "", "string") );
var_dump( strtr("hello", '', "string") );
var_dump( strtr("hello", NULL, "string") );
var_dump( strtr("hello", null, "string") );
?>
Expected result:
----------------
unicode(5) "hello"
unicode(5) "hello"
unicode(5) "hello"
unicode(5) "hello"
unicode(5) "hello"
unicode(5) "hello"
unicode(5) "hello"
unicode(5) "hello"
Actual result:
--------------
On Windows: crashes
On linux(RHEL4):
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to
allocate 1066789985 bytes) in %s on line %d
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=42861&edit=1