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