summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-05-29 17:16:52 +0000
committerZeev Suraski <zeev@php.net>2000-05-29 17:16:52 +0000
commitbc7abb330002089a5311bb5482ea4c0ce38f4470 (patch)
treee11fdc2f6dd215664c6f4b6c42c605feee0820ac /Zend
parentae1043ba0d183dc60eb4211ffa2a329e0d388d97 (diff)
downloadphp-git-bc7abb330002089a5311bb5482ea4c0ce38f4470.tar.gz
Allow disabling of functions for security reasons
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_API.c28
-rw-r--r--Zend/zend_API.h1
2 files changed, 29 insertions, 0 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 7d4b95c870..8cb751d066 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -925,3 +925,31 @@ ZEND_API int zend_set_hash_symbol(zval *symbol, char *name, int name_length,
va_end(symbol_table_list);
return SUCCESS;
}
+
+
+
+
+/* Disabled functions support */
+
+static ZEND_FUNCTION(display_disabled_function)
+{
+ zend_error(E_WARNING, "%s() has been disabled for security reasons.", get_active_function_name());
+}
+
+
+static zend_function_entry disabled_function[] = {
+ ZEND_FE(display_disabled_function, NULL)
+ { NULL, NULL, NULL }
+};
+
+
+ZEND_API int zend_disable_function(char *function_name, uint function_name_length)
+{
+ CLS_FETCH();
+
+ if (zend_hash_del(CG(function_table), function_name, function_name_length+1)==FAILURE) {
+ return FAILURE;
+ }
+ disabled_function[0].fname = function_name;
+ return zend_register_functions(disabled_function, CG(function_table));
+} \ No newline at end of file
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index daab74a0a3..9a19bf21e6 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -113,6 +113,7 @@ void zend_unregister_functions(zend_function_entry *functions, int count, HashTa
ZEND_API int zend_register_module(zend_module_entry *module_entry);
ZEND_API zend_class_entry *register_internal_class(zend_class_entry *class_entry);
ZEND_API zend_module_entry *zend_get_module(int module_number);
+ZEND_API int zend_disable_function(char *function_name, uint function_name_length);
ZEND_API void wrong_param_count(void);