From 6703f3cd6922986e3199d89d8af42dc285e4ab32 Mon Sep 17 00:00:00 2001
From: Martin Killenberg <martin.killenberg@desy.de>
Date: Mon, 2 Dec 2024 14:49:35 +0100
Subject: [PATCH 1/2] fix: include order

---
 src/telnet_protocol.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/telnet_protocol.c b/src/telnet_protocol.c
index e161dfb..8264dae 100644
--- a/src/telnet_protocol.c
+++ b/src/telnet_protocol.c
@@ -32,7 +32,6 @@
 #include "eeprom.h"
 #include "fan_current_monitor_lib.h" // added by Stanislav Chystiakov
 #include "fan_lib.h"                 // added by Stanislav Chystiakov
-#include "version.h"
 #include "hw_info.h"
 #include "mgmt_protocol_master.h"
 #include "overcurrent_detction.h"
@@ -40,6 +39,7 @@
 #include "uptime_tracker.h"
 #include "usart_lib.h"
 #include "user_board.h"
+#include "version.h"
 #include "xport_watchdog.h"
 #include <avr/eeprom.h>
 #include <ctype.h>
-- 
GitLab


From ea99914a77dc6cd112c0b3796e649d6fa922ace1 Mon Sep 17 00:00:00 2001
From: Martin Killenberg <martin.killenberg@desy.de>
Date: Mon, 2 Dec 2024 14:53:54 +0100
Subject: [PATCH 2/2] fix: integer overrun

The voltage printout was wrongly cast to int16, causing overflow at +-32 V.
This is fixed, now limiting at +-99 Volts of the protocol formatting.
---
 src/telnet_protocol.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/telnet_protocol.c b/src/telnet_protocol.c
index 8264dae..92fe24a 100644
--- a/src/telnet_protocol.c
+++ b/src/telnet_protocol.c
@@ -654,12 +654,12 @@ char uppercase(char c) {
  */
 void printChannel(int nr) {
   uint8_t status = cl_getStatus(nr);
-  int voltage;
+  int32_t voltage;
   uint16_t current;
   char name_upper[EEPROM_CHNAME_LEN];
 
   current = pm_getCurrent(nr);
-  voltage = (int)pm_getVoltage(nr);
+  voltage = pm_getVoltage(nr);
 
   if(current == 0xffff || voltage == 0x7fffffff) { // I2C error
     current = 0;
@@ -675,7 +675,7 @@ void printChannel(int nr) {
     name_upper[i] = uppercase(name_upper[i]);
   }
 
-  printf("\r\n%1d %02X %6d %" PRIu16 " %-20s", nr, status, voltage, current, name_upper);
+  printf("\r\n%1d %02X %6ld %" PRIu16 " %-20s", nr, status, voltage, current, name_upper);
 }
 
 void printAlarmMasks(void) {
-- 
GitLab