From f270e4b83f909cdd1f3be04ae0d6b86e9a65f213 Mon Sep 17 00:00:00 2001 From: "Adrian A. Baumann" Date: Thu, 21 May 2026 22:23:44 +0200 Subject: [PATCH] fix: consistent check order and explicit error reply on bad tokens in parseSweep --- Gaugecontroller/Gaugecontroller.ino | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Gaugecontroller/Gaugecontroller.ino b/Gaugecontroller/Gaugecontroller.ino index b0fa335..46aa5b8 100644 --- a/Gaugecontroller/Gaugecontroller.ino +++ b/Gaugecontroller/Gaugecontroller.ino @@ -552,10 +552,11 @@ bool parseHome(const String& line) { bool parseSweep(const String& line) { int id; char accelTok[20], speedTok[20]; if (sscanf(line.c_str(), "SWEEP %d %19s %19s", &id, accelTok, speedTok) == 3) { - if (id < 0 || id >= GAUGE_COUNT) { sendReply("ERR BAD_ID"); return true; } char* endA; float accel = (float)strtod(accelTok, &endA); char* endS; float speed = (float)strtod(speedTok, &endS); - if (endA == accelTok || *endA != '\0' || endS == speedTok || *endS != '\0') return false; + if (endA == accelTok || *endA != '\0') { sendReply("ERR BAD_ACCEL"); return true; } + if (endS == speedTok || *endS != '\0') { sendReply("ERR BAD_SPEED"); return true; } + if (id < 0 || id >= GAUGE_COUNT) { sendReply("ERR BAD_ID"); return true; } Gauge& g = gauges[id]; if (accel <= 0.0f || speed <= 0.0f) { g.sweepEnabled = false;