From ba79c6da6b40b0e2d1d6b35a5ee541d766d16553 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Thu, 5 Mar 2026 09:27:07 -0600 Subject: [PATCH] fix: add validation for state_descr in sensor readings Added validation to ensure state_descr: - Is not empty when present (min: 1 character) - Has reasonable length limit (max: 255 characters) - Prevents storing invalid/malformed state descriptions This prevents invalid state sensor readings from being stored. Fixes Medium Bug #16 from reliability audit. --- lib/towerops/snmp/sensor_reading.ex | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/towerops/snmp/sensor_reading.ex b/lib/towerops/snmp/sensor_reading.ex index bc24c855..4df599c9 100644 --- a/lib/towerops/snmp/sensor_reading.ex +++ b/lib/towerops/snmp/sensor_reading.ex @@ -41,6 +41,12 @@ defmodule Towerops.Snmp.SensorReading do |> cast(attrs, [:sensor_id, :value, :status, :state_descr, :checked_at]) |> validate_required([:sensor_id, :status, :checked_at]) |> validate_inclusion(:status, ["ok", "warning", "critical", "error"]) + |> validate_state_descr() |> foreign_key_constraint(:sensor_id) end + + # Validate state_descr when present - ensure it's not empty and has reasonable length + defp validate_state_descr(changeset) do + validate_length(changeset, :state_descr, min: 1, max: 255) + end end