com php-src: Prevented modification of original name: ext/standard/type.c
| From: | Dmitry Stogov | Date: | Wed, 16 Apr 2014 18:42:37 +0000 |
| Subject: | com php-src: Prevented modification of original name: ext/standard/type.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-77356@lists.php.net to get a copy of this message | ||
Commit: 320bf772c6d72c28d2d3ecb0e9f428a4a31edf9b
Author: Dmitry Stogov <dmitry@zend.com> Wed, 16 Apr 2014 22:42:37 +0400
Parents: 3257dc09eb06cc6efcf0b5de79c0f39382f180a6
Branches: phpng
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=320bf772c6d72c28d2d3ecb0e9f428a4a31edf9b
Log:
Prevented modification of original name
Changed paths:
M ext/standard/type.c
Diff:
diff --git a/ext/standard/type.c b/ext/standard/type.c
index 3feac63..c4fdbc8 100644
--- a/ext/standard/type.c
+++ b/ext/standard/type.c
@@ -387,14 +387,16 @@ PHP_FUNCTION(is_callable)
check_flags |= IS_CALLABLE_CHECK_SYNTAX_ONLY;
}
if (ZEND_NUM_ARGS() > 2) {
- if (callable_name) {
- ZVAL_DEREF(callable_name);
- }
+ ZVAL_DEREF(callable_name);
retval = zend_is_callable_ex(var, NULL, check_flags, &name, NULL, &error TSRMLS_CC);
zval_dtor(callable_name);
//??? is it necessary to be consistent with old PHP ("\0" support)
- name->len = strlen(name->val);
- ZVAL_STR(callable_name, name);
+ if (UNEXPECTED(name->len) != strlen(name->val)) {
+ ZVAL_STRINGL(callable_name, name->val, strlen(name->val));
+ STR_RELEASE(name);
+ } else {
+ ZVAL_STR(callable_name, name);
+ }
} else {
retval = zend_is_callable_ex(var, NULL, check_flags, NULL, NULL, &error TSRMLS_CC);
}