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