From 5153b21c57d87f174a25a1e95d24fb104b35f4a4 Mon Sep 17 00:00:00 2001 From: Pablo Aragon Date: Mon, 29 Apr 2024 12:46:38 +0200 Subject: [PATCH] 13600-Fix OS filter in report Grouped->End of life --- .../reporting/reporting_builder.item_editor.php | 4 ++-- pandora_console/include/functions_reporting.php | 13 +++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pandora_console/godmode/reporting/reporting_builder.item_editor.php b/pandora_console/godmode/reporting/reporting_builder.item_editor.php index 945739bc74..843f338410 100755 --- a/pandora_console/godmode/reporting/reporting_builder.item_editor.php +++ b/pandora_console/godmode/reporting/reporting_builder.item_editor.php @@ -1362,12 +1362,12 @@ $class = 'databox filters'; $result_select = []; - foreach ($os as $item) { + foreach ($os_list as $item) { $result_select[$item['id_os']] = $item['name']; } html_print_select( - $os_list, + $result_select, 'os_selector', $os_selector, '' diff --git a/pandora_console/include/functions_reporting.php b/pandora_console/include/functions_reporting.php index aa2567952b..97ce1bc2f2 100755 --- a/pandora_console/include/functions_reporting.php +++ b/pandora_console/include/functions_reporting.php @@ -3856,16 +3856,25 @@ function reporting_end_of_life($report, $content) ); $es_os_version = $external_source['os_version']; + $os_selector_name = db_get_value('name', 'tconfig_os', 'id_os', (int) $external_source['os_selector']); $es_limit_eol_datetime = DateTime::createFromFormat('Y/m/d', $external_source['end_of_life_date']); // Post-process returned agents to filter agents using correctly formatted fields. foreach ($agents as $idx => $agent) { + if (empty($agent['os_version']) === true) { + $agent['os_version'] = '.*'; + } + // Must perform this query and subsequent operations in each iteration (note this is costly) since OS version field may contain HTML entities in BD and decoding can't be fully handled with mysql methods when doing a REGEXP. - $result_end_of_life = db_get_value_sql('SELECT end_of_support FROM tconfig_os_version WHERE "'.io_safe_output($agent['os_version']).'" REGEXP version AND "'.io_safe_output($agent['name']).'" REGEXP product'); + $result_end_of_life = db_get_value_sql('SELECT end_of_support FROM tconfig_os_version'); $agent_eol_datetime = DateTime::createFromFormat('Y/m/d', $result_end_of_life); - if ((preg_match('/'.$es_os_version.'/i', $agent['os_version']) || $es_os_version === '') && $result_end_of_life !== false && ($es_limit_eol_datetime === false || $es_limit_eol_datetime >= $agent_eol_datetime)) { + if ((preg_match('/'.$es_os_version.'/i', $agent['os_version']) || $es_os_version === '') + && $os_selector_name === io_safe_output($agent['name']) + && $result_end_of_life !== false + && ($es_limit_eol_datetime === false || $es_limit_eol_datetime >= $agent_eol_datetime) + ) { // Agent matches an existing OS version. $agents[$idx]['end_of_life'] = $result_end_of_life; } else {