Skip to content

Commit 978d281

Browse files
Yuuoniyjic23
authored andcommitted
iio: dac: ad3552r-hs: fix out-of-bound write in ad3552r_hs_write_data_source
When simple_write_to_buffer() succeeds, it returns the number of bytes actually copied to the buffer. The code incorrectly uses 'count' as the index for null termination instead of the actual bytes copied. If count exceeds the buffer size, this leads to out-of-bounds write. Add a check for the count and use the return value as the index. The bug was validated using a demo module that mirrors the original code and was tested under QEMU. Pattern of the bug: - A fixed 64-byte stack buffer is filled using count. - If count > 64, the code still does buf[count] = '\0', causing an - out-of-bounds write on the stack. Steps for reproduce: - Opens the device node. - Writes 128 bytes of A to it. - This overflows the 64-byte stack buffer and KASAN reports the OOB. Found via static analysis. This is similar to the commit da93748 ("iio: backend: fix out-of-bound write") Fixes: b1c5d68 ("iio: dac: ad3552r-hs: add support for internal ramp") Cc: stable@vger.kernel.org Signed-off-by: Miaoqian Lin <linmq006@gmail.com> Reviewed-by: Nuno Sá <nuno.sa@analog.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com> Reviewed-by: David Lechner <dlechner@baylibre.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
1 parent b8f15d1 commit 978d281

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

drivers/iio/dac/ad3552r-hs.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -549,12 +549,15 @@ static ssize_t ad3552r_hs_write_data_source(struct file *f,
549549

550550
guard(mutex)(&st->lock);
551551

552+
if (count >= sizeof(buf))
553+
return -ENOSPC;
554+
552555
ret = simple_write_to_buffer(buf, sizeof(buf) - 1, ppos, userbuf,
553556
count);
554557
if (ret < 0)
555558
return ret;
556559

557-
buf[count] = '\0';
560+
buf[ret] = '\0';
558561

559562
ret = match_string(dbgfs_attr_source, ARRAY_SIZE(dbgfs_attr_source),
560563
buf);

0 commit comments

Comments
 (0)