com php-src: Fixed possible crash: Zend/zend_builtin_functi ons.c

From: Date: Tue, 13 Jan 2015 05:30:54 +0000
Subject: com php-src: Fixed possible crash: Zend/zend_builtin_functi ons.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-84078@lists.php.net to get a copy of this message
Commit: d810cf816bdeea6133c773241c8804f1d347c560 Author: Dmitry Stogov <dmitry@zend.com> Tue, 13 Jan 2015 08:30:54 +0300 Parents: 2d8fd4b33553605f21b584b5ef6b0a287e9f21a9 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d810cf816bdeea6133c773241c8804f1d347c560 Log: Fixed possible crash Changed paths: M Zend/zend_builtin_functions.c Diff: diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 3ce11e7..223547f 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -684,33 +684,35 @@ ZEND_FUNCTION(error_reporting) old_error_reporting = EG(error_reporting); if(ZEND_NUM_ARGS() != 0) { do { - if (!EG(error_reporting_ini_entry)) { - zend_ini_entry *p = zend_hash_str_find_ptr(EG(ini_directives), "error_reporting", sizeof("error_reporting")-1); + zend_ini_entry *p = EG(error_reporting_ini_entry); + + if (!p) { + p = zend_hash_str_find_ptr(EG(ini_directives), "error_reporting", sizeof("error_reporting")-1); if (p) { EG(error_reporting_ini_entry) = p; } else { break; } } - if (!EG(error_reporting_ini_entry)->modified) { + if (!p->modified) { if (!EG(modified_ini_directives)) { ALLOC_HASHTABLE(EG(modified_ini_directives)); zend_hash_init(EG(modified_ini_directives), 8, NULL, NULL, 0); } - if (EXPECTED(zend_hash_str_add_ptr(EG(modified_ini_directives), "error_reporting", sizeof("error_reporting")-1, EG(error_reporting_ini_entry)) != NULL)) { - EG(error_reporting_ini_entry)->orig_value = EG(error_reporting_ini_entry)->value; - EG(error_reporting_ini_entry)->orig_modifiable = EG(error_reporting_ini_entry)->modifiable; - EG(error_reporting_ini_entry)->modified = 1; + if (EXPECTED(zend_hash_str_add_ptr(EG(modified_ini_directives), "error_reporting", sizeof("error_reporting")-1, p) != NULL)) { + p->orig_value = p->value; + p->orig_modifiable = p->modifiable; + p->modified = 1; } - } else { - zend_string_release(EG(error_reporting_ini_entry)->value); + } else if (p->value) { + zend_string_release(p->value); } - EG(error_reporting_ini_entry)->value = zval_get_string(err); + p->value = zval_get_string(err); if (Z_TYPE_P(err) == IS_LONG) { EG(error_reporting) = Z_LVAL_P(err); } else { - EG(error_reporting) = atoi(EG(error_reporting_ini_entry)->value); + EG(error_reporting) = atoi(p->value->val); } } while (0); }

« previous php.cvs (#84078) next »