From ae27e066753370b72c8991831f18052654bedf8a Mon Sep 17 00:00:00 2001 From: "Michael Kaufmann (d00p)" Date: Mon, 12 Apr 2010 16:36:09 +0000 Subject: [PATCH] - fixing domain validation - added validation for local hosts (mysql-hosts) --- .../function.checkMysqlAccessHost.php | 1 + .../validate/function.validateDomain.php | 28 +++++++++++++------ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/functions/validate/function.checkMysqlAccessHost.php b/lib/functions/validate/function.checkMysqlAccessHost.php index fce35199..6d4cd1e7 100644 --- a/lib/functions/validate/function.checkMysqlAccessHost.php +++ b/lib/functions/validate/function.checkMysqlAccessHost.php @@ -25,6 +25,7 @@ function checkMysqlAccessHost($fieldname, $fielddata, $newfieldvalue, $allnewfie { if(validate_ip($host_entry, true) == false && validateDomain($host_entry) == false + && validateLocalHostname($host_entry) == false && $host_entry != '%') { return array(FORMFIELDS_PLAUSIBILITY_CHECK_ERROR, 'invalidmysqlhost', $host_entry); diff --git a/lib/functions/validate/function.validateDomain.php b/lib/functions/validate/function.validateDomain.php index d3226e31..aca592d9 100644 --- a/lib/functions/validate/function.validateDomain.php +++ b/lib/functions/validate/function.validateDomain.php @@ -40,15 +40,8 @@ function validateDomain($domainname) // there is a bug in php 5.2.13 - 5.3.2 which // lets filter_var fail if the domain has // a dash (-) in it. # - if(version_compare("5.2.13", PHP_VERSION, ">=") - && version_compare("5.3.2", PHP_VERSION, "<=")) - { - if(filter_var($domainname_tmp, FILTER_VALIDATE_URL) !== false && filter_var($domainname_tmp, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) === false && filter_var($domainname_tmp, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) === false) - { - return $domainname; - } - } - else + if(version_compare("5.2.13", PHP_VERSION, "=") + || version_compare("5.3.2", PHP_VERSION, "=")) { $pattern = '/^([a-z0-9]([a-z0-9\-]{0,61}[a-z0-9])?\.)+[a-z]{2,6}$/i'; if(preg_match($pattern, $domainname_tmp)) @@ -56,5 +49,22 @@ function validateDomain($domainname) return $domainname; } } + else + { + if(filter_var($domainname_tmp, FILTER_VALIDATE_URL) !== false && filter_var($domainname_tmp, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED) === false && filter_var($domainname_tmp, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) === false) + { + return $domainname; + } + } + return false; +} + +function validateLocalHostname($hostname) +{ + $pattern = '/^([a-zA-Z0-9\-])+$/i'; + if(preg_match($pattern, $hostname)) + { + return $hostname; + } return false; }