summaryrefslogtreecommitdiff
path: root/ext/reflection/php_reflection.c
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2016-08-20 19:00:03 +0200
committerNikita Popov <nikic@php.net>2016-08-20 19:00:03 +0200
commitdfed09afcaed6773f00b366b0580a187f2fc453f (patch)
tree900fea36487e1b198de77485a5f18bbb4c9addd1 /ext/reflection/php_reflection.c
parent9988863d37b67af934a9b8d125b84862d6ca9016 (diff)
downloadphp-git-dfed09afcaed6773f00b366b0580a187f2fc453f.tar.gz
Fix off-by-one in ReflectionType::__toString()
Review mistake...
Diffstat (limited to 'ext/reflection/php_reflection.c')
-rw-r--r--ext/reflection/php_reflection.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c
index df15efd077..66ffeab196 100644
--- a/ext/reflection/php_reflection.c
+++ b/ext/reflection/php_reflection.c
@@ -3040,14 +3040,16 @@ ZEND_METHOD(reflection_type, __toString)
if (param->arg_info->type_hint == IS_OBJECT
&& !zend_string_equals_literal_ci(param->arg_info->class_name, "self")
&& !zend_string_equals_literal_ci(param->arg_info->class_name, "parent")) {
- str = zend_string_extend(str, ZSTR_LEN(str) + 1, 0);
- memmove(ZSTR_VAL(str) + 1, ZSTR_VAL(str), ZSTR_LEN(str) + 1);
+ size_t orig_len = ZSTR_LEN(str);
+ str = zend_string_extend(str, orig_len + 1, 0);
+ memmove(ZSTR_VAL(str) + 1, ZSTR_VAL(str), orig_len + 1);
ZSTR_VAL(str)[0] = '\\';
}
if (param->arg_info->allow_null) {
- str = zend_string_extend(str, ZSTR_LEN(str) + 1, 0);
- memmove(ZSTR_VAL(str) + 1, ZSTR_VAL(str), ZSTR_LEN(str) + 1);
+ size_t orig_len = ZSTR_LEN(str);
+ str = zend_string_extend(str, orig_len + 1, 0);
+ memmove(ZSTR_VAL(str) + 1, ZSTR_VAL(str), orig_len + 1);
ZSTR_VAL(str)[0] = '?';
}