]> git.ipfire.org Git - thirdparty/linux.git/commit
iio: dac: ad3552r-hs: fix out-of-bound write in ad3552r_hs_write_data_source
authorMiaoqian Lin <linmq006@gmail.com>
Wed, 7 Jan 2026 14:35:50 +0000 (22:35 +0800)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 11 Jan 2026 13:25:15 +0000 (13:25 +0000)
commit978d28136c53df38f8f0b747191930e2f95e9084
tree77421dd6853a1789d6a4268e36ea977f172631ef
parentb8f15d1df2e73322e2112de21a4a7f3553c7fb60
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 da9374819eb3 ("iio: backend: fix out-of-bound write")

Fixes: b1c5d68ea66e ("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>
drivers/iio/dac/ad3552r-hs.c