]> granicus.if.org Git - php/commitdiff
Fixed a buffer over-run bug in case a function to be overloaded doesn't exist.
authorMoriyoshi Koizumi <moriyoshi@php.net>
Wed, 13 Nov 2002 07:40:11 +0000 (07:40 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Wed, 13 Nov 2002 07:40:11 +0000 (07:40 +0000)
# This patch was made by Ilia.

ext/mbstring/mbstring.c

index b6f14373bcb7f67336c5bf5d86695b3dd315e5b0..28bd4fe17ff5669f20c317ae8a874e826957c97c 100644 (file)
@@ -915,24 +915,16 @@ PHP_RINIT_FUNCTION(mbstring)
 
                                zend_hash_find(EG(function_table), p->ovld_func, strlen(p->ovld_func)+1 , (void **)&func);
                                
-                               if (zend_hash_find(EG(function_table), p->orig_func, 
-                                               strlen(p->orig_func)+1, (void **)&orig) != SUCCESS) {
-
-                                       php_error_docref("ref.mbstring" TSRMLS_CC, E_ERROR,
-                                               "mbstring couldn't find function %s.", p->orig_func);
-
+                               if (zend_hash_find(EG(function_table), p->orig_func, strlen(p->orig_func)+1, (void **)&orig) != SUCCESS) {
+                                       php_error_docref("ref.mbstring" TSRMLS_CC, E_WARNING, "mbstring couldn't find function %s.", p->orig_func);
+                                       return FAILURE;
                                } else {
+                                       zend_hash_add(EG(function_table), p->save_func, strlen(p->save_func)+1, orig, sizeof(zend_function), NULL);
 
-                                       zend_hash_add(EG(function_table), p->save_func,
-                                               strlen(p->save_func)+1, orig,
-                                               sizeof(zend_function), NULL);
-
-                                       if (zend_hash_update(EG(function_table), p->orig_func,
-                                               strlen(p->orig_func)+1, func, sizeof(zend_function),
+                                       if (zend_hash_update(EG(function_table), p->orig_func, strlen(p->orig_func)+1, func, sizeof(zend_function), 
                                                NULL) == FAILURE) {
-
-                                               php_error_docref("ref.mbstring" TSRMLS_CC, E_ERROR,
-                                                       "mbstring couldn't replace function %s.", p->orig_func);
+                                               php_error_docref("ref.mbstring" TSRMLS_CC, E_WARNING, "mbstring couldn't replace function %s.", p->orig_func);
+                                               return FAILURE;
                                        }
                                }
                        }