diff options
| author | Jani Taskinen <jani@php.net> | 2007-11-16 12:26:34 +0000 | 
|---|---|---|
| committer | Jani Taskinen <jani@php.net> | 2007-11-16 12:26:34 +0000 | 
| commit | 3e0680f2ee00de7a4992e1d21607226984f1b36b (patch) | |
| tree | c8f79ec451beb8ee3552bf030d7d99716eaef60f /ext/mbstring/php_mbregex.c | |
| parent | db87e4b0090d152495de23445aac1e91c30e9839 (diff) | |
| download | php-git-3e0680f2ee00de7a4992e1d21607226984f1b36b.tar.gz | |
MFH:- Fixed bug #31911 (mb_ereg*_replace() crashes when replacement string is invalid
      PHP expression and 'e' option is used)
Diffstat (limited to 'ext/mbstring/php_mbregex.c')
| -rw-r--r-- | ext/mbstring/php_mbregex.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index 79ff22a503..3f8bca9d47 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -737,7 +737,12 @@ static void _php_mb_regex_ereg_replace_exec(INTERNAL_FUNCTION_PARAMETERS, OnigOp  				/* 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)); | 
