From: Ilia Alshanetsky Date: Mon, 16 Dec 2002 15:43:52 +0000 (+0000) Subject: A better, strtok() free implementaion of php_disable_functions(). X-Git-Tag: PHP_5_0_dev_before_13561_fix~704 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5bad812dad24b9a6816ba77b42fc5e0aa82b7d74;p=php A better, strtok() free implementaion of php_disable_functions(). --- diff --git a/main/main.c b/main/main.c index 0005dd3274..9980df420f 100644 --- a/main/main.c +++ b/main/main.c @@ -168,15 +168,36 @@ static PHP_INI_MH(OnChangeMemoryLimit) */ static void php_disable_functions(TSRMLS_D) { - char *func; - char *new_value_dup = strdup(INI_STR("disable_functions")); /* This is an intentional leak, - * it's not a big deal as it's process-wide - */ - - func = strtok(new_value_dup, ", "); - while (func) { - zend_disable_function(func, strlen(func) TSRMLS_CC); - func = strtok(NULL, ", "); + char *s = NULL; + char *e = INI_STR("disable_functions"); + char p; + + if (!*e) { + return; + } + + while (*e) { + switch (*e) { + case ' ': + case ',': + if (s) { + p = *e; + *e = '\0'; + zend_disable_function(s, e-s TSRMLS_CC); + *e = p; + s = NULL; + } + break; + default: + if (!s) { + s = e; + } + break; + } + e++; + } + if (s) { + zend_disable_function(s, e-s TSRMLS_CC); } } /* }}} */