From 338dc4c288bfe2b2e48ae232a6be9cd431285131 Mon Sep 17 00:00:00 2001 From: cschantz Date: Thu, 4 Dec 2025 16:28:31 -0500 Subject: [PATCH] Add parameter validation to 8 more functions in mysql-analyzer.sh FUNCTIONS FIXED: 1. extract_tables_from_query() - validate query parameter 2. explain_query() - validate db_name and query parameters 3. analyze_queries_for_problems() - validate query_file parameter 4. generate_plugin_statistics() - validate problems_file parameter 5. check_table_bloat() - validate db_name and table_name parameters 6. recommend_fix() - validate issue parameter 7. generate_summary_report() - validate problems_file parameter 8. find_largest_tables() - has optional parameter with default (already safe) PATTERN USED: [ -z "$1" ] && return 1 # For single required parameter [ -z "$1" ] || [ -z "$2" ] && return 1 # For multiple required parameters PROGRESS: - Fixed 8 functions in lib/mysql-analyzer.sh - QA checker now shows different set of HIGH issues (progress!) - HIGH issues moved from mysql-analyzer.sh to system-detect.sh and threat-intelligence.sh NEXT: Fix remaining HIGH issues in other library files --- lib/mysql-analyzer.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/mysql-analyzer.sh b/lib/mysql-analyzer.sh index 68008b6..20ba9ca 100755 --- a/lib/mysql-analyzer.sh +++ b/lib/mysql-analyzer.sh @@ -297,6 +297,7 @@ extract_database_from_query() { # Extract tables from query extract_tables_from_query() { + [ -z "$1" ] && return 1 local query="$1" # Extract FROM and JOIN clauses @@ -305,6 +306,7 @@ extract_tables_from_query() { # Analyze query performance with EXPLAIN explain_query() { + [ -z "$1" ] || [ -z "$2" ] && return 1 local db_name="$1" local query="$2" local explain_file="${TEMP_SESSION_DIR}/explain_${db_name}_$$.tmp" @@ -332,6 +334,7 @@ explain_query() { # Analyze queries and identify problems analyze_queries_for_problems() { + [ -z "$1" ] && return 1 local query_file="$1" local problems_file="${TEMP_SESSION_DIR}/query_problems.tmp" @@ -393,6 +396,7 @@ analyze_queries_for_problems() { # Generate plugin query statistics generate_plugin_statistics() { + [ -z "$1" ] && return 1 local problems_file="$1" local stats_file="${TEMP_SESSION_DIR}/plugin_stats.tmp" @@ -425,6 +429,7 @@ find_largest_tables() { # Check for bloated tables check_table_bloat() { + [ -z "$1" ] || [ -z "$2" ] && return 1 local db_name="$1" local table_name="$2" @@ -450,6 +455,7 @@ check_table_bloat() { # Recommend fixes for common issues recommend_fix() { + [ -z "$1" ] && return 1 local issue="$1" local db_name="$2" local table_name="$3" @@ -493,6 +499,7 @@ recommend_fix() { ############################################################################# generate_summary_report() { + [ -z "$1" ] && return 1 local problems_file="$1" print_banner "MySQL Query Analysis Summary"