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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user