iio: ad5755: fix off-by-one on devnr limit check
authorColin Ian King <colin.king@canonical.com>
Mon, 25 Jul 2016 22:40:01 +0000 (23:40 +0100)
committerJonathan Cameron <jic23@kernel.org>
Mon, 29 Aug 2016 15:15:24 +0000 (16:15 +0100)
The comparison for devnr limits is off-by-one, the current check
allows 0 to AD5755_NUM_CHANNELS and the limit should be in fact
0 to AD5755_NUM_CHANNELS - 1.  This can lead to an out of bounds
write to pdata->dac[devnr]. Fix this by replacing > with >= on the
comparison.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Fixes: c947459979c6 ("iio: ad5755: add support for dt bindings")
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/dac/ad5755.c

index 0fde593ec0d93bcc53b3f255ccc2b1db75198a43..5f79682325649d3dc8d1c3e4ba3ecc4e16ee8507 100644 (file)
@@ -655,7 +655,7 @@ static struct ad5755_platform_data *ad5755_parse_dt(struct device *dev)
 
        devnr = 0;
        for_each_child_of_node(np, pp) {
-               if (devnr > AD5755_NUM_CHANNELS) {
+               if (devnr >= AD5755_NUM_CHANNELS) {
                        dev_err(dev,
                                "There is to many channels defined in DT\n");
                        goto error_out;