From 94c46dc2aa9d6f4002946de39545547b0ac631dc Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Wed, 3 Apr 2019 14:35:44 +0200
Subject: [PATCH] Fix overflow error in serial2002 driver

---
 plugins/serial2002/serial2002.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/plugins/serial2002/serial2002.c b/plugins/serial2002/serial2002.c
index 3b6f932..5583792 100644
--- a/plugins/serial2002/serial2002.c
+++ b/plugins/serial2002/serial2002.c
@@ -134,7 +134,14 @@ static struct moberg_status analog_out_write(
   struct moberg_channel_context *channel = &analog_out->channel_context;
   struct moberg_device_context *device = channel->device;
   struct analog_map map = device->analog_out.map[channel->index];
-  long as_long = (desired_value - map.min) / map.delta;
+  long as_long;
+  if (desired_value < map.min) {
+    as_long = 0;
+  } else if (desired_value > map.max) {
+    as_long = map.maxdata;
+  } else {
+    as_long = (desired_value - map.min) / map.delta;
+  }
   if (as_long < 0) {
     as_long = 0;
   } else if (as_long > map.maxdata) {
-- 
GitLab