correct validating list of AXFR-servers, fixes #1440

Signed-off-by: Michael Kaufmann (d00p) <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann (d00p)
2014-06-23 08:51:04 +02:00
parent 1c1affa7bd
commit addd70dfe8
3 changed files with 28 additions and 6 deletions

View File

@@ -74,6 +74,7 @@ return array(
'varname' => 'axfrservers', 'varname' => 'axfrservers',
'type' => 'string', 'type' => 'string',
'string_type' => 'validate_ip', 'string_type' => 'validate_ip',
'string_delimiter' => ',',
'string_emptyallowed' => true, 'string_emptyallowed' => true,
'default' => '', 'default' => '',
'save_method' => 'storeSettingField', 'save_method' => 'storeSettingField',

View File

@@ -107,11 +107,8 @@ function validateFormFieldString($fieldname, $fielddata, $newfieldvalue)
} }
} }
elseif (isset($fielddata['string_type']) && $fielddata['string_type'] == 'validate_ip') { elseif (isset($fielddata['string_type']) && $fielddata['string_type'] == 'validate_ip') {
$newfieldvalue = validate_ip($newfieldvalue, true); $newfieldvalue = validate_ip2($newfieldvalue);
if ($newfieldvalue === false) { $returnvalue = ($newfieldvalue !== false ? true : 'invalidip');
$newfieldvalue = '';
}
$returnvalue = false;
} }
elseif (preg_match('/^[^\r\n\t\f\0]*$/D', $newfieldvalue)) { elseif (preg_match('/^[^\r\n\t\f\0]*$/D', $newfieldvalue)) {
$returnvalue = true; $returnvalue = true;

View File

@@ -21,6 +21,7 @@
* Checks whether it is a valid ip * Checks whether it is a valid ip
* *
* @return mixed ip address on success, standard_error on failure * @return mixed ip address on success, standard_error on failure
* @deprecated use validate_ip2
*/ */
function validate_ip($ip, $return_bool = false, $lng = 'invalidip') { function validate_ip($ip, $return_bool = false, $lng = 'invalidip') {
@@ -32,9 +33,32 @@ function validate_ip($ip, $return_bool = false, $lng = 'invalidip') {
return false; return false;
} else { } else {
standard_error($lng, $ip); standard_error($lng, $ip);
exit; exit();
} }
} else { } else {
return $ip; return $ip;
} }
}
/**
* Checks whether it is a valid ip
*
* @return mixed ip address on success, false on failure
*/
function validate_ip2($ip, $return_bool = false, $lng = 'invalidip') {
if ((filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)
|| filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4))
&& filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE | FILTER_FLAG_NO_PRIV_RANGE)
) {
return $ip;
}
if ($return_bool) {
return false;
} else {
standard_error($lng, $ip);
exit();
}
} }