jani Fri Nov 16 12:26:34 2007 UTC
Added files: (Branch: PHP_5_3)
/php-src/ext/mbstring/tests bug43301.phpt
Modified files:
/php-src/ext/mbstring php_mbregex.c
Log:
MFH:- Fixed bug #31911 (mb_ereg*_replace() crashes when replacement string is
invalid
PHP expression and 'e' option is used)
http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/php_mbregex.c?r1=1.53.2.1.2.4.2.1&r2=1.53.2.1.2.4.2.2&diff_format=u
Index: php-src/ext/mbstring/php_mbregex.c
diff -u php-src/ext/mbstring/php_mbregex.c:1.53.2.1.2.4.2.1
php-src/ext/mbstring/php_mbregex.c:1.53.2.1.2.4.2.2
--- php-src/ext/mbstring/php_mbregex.c:1.53.2.1.2.4.2.1 Sun Oct 7 05:22:04 2007
+++ php-src/ext/mbstring/php_mbregex.c Fri Nov 16 12:26:34 2007
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_mbregex.c,v 1.53.2.1.2.4.2.1 2007/10/07 05:22:04 davidw Exp $ */
+/* $Id: php_mbregex.c,v 1.53.2.1.2.4.2.2 2007/11/16 12:26:34 jani Exp $ */
#ifdef HAVE_CONFIG_H
@@ -737,7 +737,12 @@
/* null terminate buffer */
smart_str_appendc(&eval_buf, '\0');
/* do eval */
- zend_eval_string(eval_buf.c, &v, description
TSRMLS_CC);
+ if (zend_eval_string(eval_buf.c, &v,
description TSRMLS_CC) == FAILURE) {
+ efree(description);
+ php_error_docref(NULL
TSRMLS_CC,E_ERROR, "Failed evaluating code: %s%s", PHP_EOL, eval_buf.c);
+ /* zend_error() does not return in this
case */
+ }
+
/* result of eval */
convert_to_string(&v);
smart_str_appendl(&out_buf, Z_STRVAL(v),
Z_STRLEN(v));
http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/bug43301.phpt?view=markup&rev=1.1
Index: php-src/ext/mbstring/tests/bug43301.phpt
+++ php-src/ext/mbstring/tests/bug43301.phpt
--TEST--
Bug #31911 (mb_ereg*_replace() crashes when replacement string is invalid PHP
expression and 'e' option is used)
--SKIPIF--
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
--FILE--
<?php
$ptr = 'hello';
$txt = <<<doc
hello, I have got a cr*sh on you
doc;
echo mb_ereg_replace($ptr,'$1',$txt,'e');
?>
--EXPECTF--
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in
%s/bug43301.php(%d) : mbregex replace on line 1
Fatal error: mb_ereg_replace(): Failed evaluating code:
$1 in %s/bug43301.php on line %d
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php