iio: dac: ad5770r: fix off-by-one check on maximum number of channels
authorColin Ian King <colin.king@canonical.com>
Fri, 3 Apr 2020 12:58:38 +0000 (13:58 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 19 Apr 2020 16:50:01 +0000 (17:50 +0100)
Currently there is an off-by-one check on the number of channels that
will cause an arry overrun in array st->output_mode when calling the
function d5770r_store_output_range. Fix this by using >= rather than >
to check for maximum number of channels.

Addresses-Coverity: ("Out-of-bounds access")
Fixes: cbbb819837f6 ("iio: dac: ad5770r: Add AD5770R support")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/dac/ad5770r.c

index a98ea76732e72cf07881fcbbda0dd0224fb2aebe..2d7623b9b2c0ec8b88e46676a40086660c7d0cb7 100644 (file)
@@ -525,7 +525,7 @@ static int ad5770r_channel_config(struct ad5770r_state *st)
                ret = fwnode_property_read_u32(child, "num", &num);
                if (ret)
                        return ret;
-               if (num > AD5770R_MAX_CHANNELS)
+               if (num >= AD5770R_MAX_CHANNELS)
                        return -EINVAL;
 
                ret = fwnode_property_read_u32_array(child,