Fix integer expression error in subnet_bonus parsing

Bug: Line 2557 integer comparison failed
Error: [: 1|0|: integer expression expected

Root cause:
calculate_subnet_bonus() returns 'count|bonus|reason' format
Code was trying to compare full string '1|0|' as integer

Fix:
Parse the pipe-delimited output properly:
- IFS='|' read -r subnet_count subnet_bonus subnet_reason
- Use ${subnet_bonus:-0} for safe integer comparison
- Use subnet_reason instead of hardcoded 'SUBNET_ATTACK'

This matches the pattern used for other intelligence functions
(velocity_data, div_data, timing_result).
This commit is contained in:
cschantz
2025-12-24 20:29:56 -05:00
parent 83a6f4cbe6
commit 996be0bdd0
2 changed files with 8 additions and 8 deletions
+4 -4
View File
@@ -2553,12 +2553,12 @@ monitor_network_attacks() {
block_reasons="${block_reasons}${div_reason}"
fi
local subnet_bonus=$(calculate_subnet_bonus "$ip")
if [ "$subnet_bonus" -gt 0 ]; then
local subnet_data=$(calculate_subnet_bonus "$ip")
IFS='|' read -r subnet_count subnet_bonus subnet_reason <<< "$subnet_data"
if [ "${subnet_bonus:-0}" -gt 0 ]; then
score=$((score + subnet_bonus))
local context_reason="SUBNET_ATTACK"
[ -n "$block_reasons" ] && block_reasons="${block_reasons}+" || block_reasons=""
block_reasons="${block_reasons}${context_reason}"
block_reasons="${block_reasons}${subnet_reason}"
fi
# Detect timing patterns
+4 -4
View File
@@ -2553,12 +2553,12 @@ monitor_network_attacks() {
block_reasons="${block_reasons}${div_reason}"
fi
local subnet_bonus=$(calculate_subnet_bonus "$ip")
if [ "$subnet_bonus" -gt 0 ]; then
local subnet_data=$(calculate_subnet_bonus "$ip")
IFS='|' read -r subnet_count subnet_bonus subnet_reason <<< "$subnet_data"
if [ "${subnet_bonus:-0}" -gt 0 ]; then
score=$((score + subnet_bonus))
local context_reason="SUBNET_ATTACK"
[ -n "$block_reasons" ] && block_reasons="${block_reasons}+" || block_reasons=""
block_reasons="${block_reasons}${context_reason}"
block_reasons="${block_reasons}${subnet_reason}"
fi
# Detect timing patterns