summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2007-11-22 13:27:13 +0000
committerDmitry Stogov <dmitry@php.net>2007-11-22 13:27:13 +0000
commit648fbe9d5838073154f3737829d5298502184343 (patch)
treebd21fcbb0af89d62032a842dc4e6f29518fa3cdf /Zend/zend_API.c
parent1836daf7f9f3ab088a65fd8c0b8c9421d6550be5 (diff)
downloadphp-git-648fbe9d5838073154f3737829d5298502184343.tar.gz
Fixed bug #43128 (Very long class name causes segfault)
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r--Zend/zend_API.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index fbf73e8e76..056b3b6879 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -1863,11 +1863,10 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio
}
}
fname_len = strlen(ptr->fname);
- lowercase_name = do_alloca(fname_len+1);
- zend_str_tolower_copy(lowercase_name, ptr->fname, fname_len);
+ lowercase_name = zend_str_tolower_dup(ptr->fname, fname_len);
if (zend_hash_add(target_function_table, lowercase_name, fname_len+1, &function, sizeof(zend_function), (void**)&reg_function) == FAILURE) {
unload=1;
- free_alloca(lowercase_name);
+ efree(lowercase_name);
break;
}
if (scope) {
@@ -1909,7 +1908,7 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio
}
ptr++;
count++;
- free_alloca(lowercase_name);
+ efree(lowercase_name);
}
if (unload) { /* before unloading, display all remaining bad function in the module */
if (scope) {