Files
cacti/lib/html_validate.php
T
netniV 371f8b5253 Fix issues with backtracing and input validation (#3559, #3560)
- When a developer uses backtracing, HTML output can be seen from command line bug confirmed
- When using `input_validate_xxx`, calls to `die_html_input_error()` do not pass variable name bug confirmed

Closes #3559
Closes #3560
2022-11-26 18:28:29 +00:00

78 lines
3.1 KiB
PHP

<?php
/*
+-------------------------------------------------------------------------+
| Copyright (C) 2004-2022 The Cacti Group |
| |
| This program is free software; you can redistribute it and/or |
| modify it under the terms of the GNU General Public License |
| as published by the Free Software Foundation; either version 2 |
| of the License, or (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
+-------------------------------------------------------------------------+
| Cacti: The Complete RRDtool-based Graphing Solution |
+-------------------------------------------------------------------------+
| This code is designed, written, and maintained by the Cacti Group. See |
| about.php and/or the AUTHORS file for specific developer information. |
+-------------------------------------------------------------------------+
| http://www.cacti.net/ |
+-------------------------------------------------------------------------+
*/
function input_validate_input_equals($value, $c_value, $variable = '') {
if ($value != $c_value) {
die_html_input_error($variable, $value);
}
}
function input_validate_input_number($value, $variable = '') {
if ((!is_numeric($value)) && ($value != '')) {
die_html_input_error($variable, $value);
}
}
function input_validate_input_regex($value, $regex, $variable = '') {
if ($value != null && $value != '' && (!preg_match('/' . $regex . '/', $value))) {
die_html_input_error($variable, $value);
}
}
function html_log_input_error($variable) {
cacti_debug_backtrace("Input Validation Not Performed for '$variable'");
}
function die_html_input_error($variable = null, $value = null, $message = '') {
$func = defined('CACTI_CLI_ONLY') ? 'trim' : 'html_escape';
if ($message == '') {
$message = __('Validation error for variable %s with a value of %s. See backtrace below for more details.', $variable, $value);
}
$variable = ($variable !== null ? ', Variable:' . $$func($variable) : '');
$value = ($value !== null ? ', Value:' . $$func($value) : '');
$mode = !(defined('CACTI_CLI_ONLY') || isset_request_var('json'));
cacti_debug_backtrace('Validation Error' . $variable . $value, $mode);
if (defined('CACTI_CLI_ONLY')) {
print $message . PHP_EOL;
exit(1);
} elseif (isset_request_var('json')) {
print json_encode(
array(
'status' => '500',
'statusText' => __('Validation Error'),
'responseText' => $message
)
);
} else {
print "<table style='width:100%;text-align:center;'><tr><td>$message</td></tr></table>";
bottom_footer();
}
exit;
}