mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
hwmon: (tps53679) Fix array access with zero-length block read
i2c_smbus_read_block_data() can return 0, indicating a zero-length
read. When this happens, tps53679_identify_chip() accesses buf[ret - 1]
which is buf[-1], reading one byte before the buffer on the stack.
Fix by changing the check from "ret < 0" to "ret <= 0", treating a
zero-length read as an error (-EIO), which prevents the out-of-bounds
array access.
Also fix a typo in the adjacent comment: "if present" instead of
duplicate "if".
Fixes: 75ca1e5875 ("hwmon: (pmbus/tps53679) Add support for TPS53685")
Signed-off-by: Sanman Pradhan <psanman@juniper.net>
Link: https://lore.kernel.org/r/20260329170925.34581-2-sanman.pradhan@hpe.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
7aaa8047ea
commit
0e211f6aaa
|
|
@ -103,10 +103,10 @@ static int tps53679_identify_chip(struct i2c_client *client,
|
|||
}
|
||||
|
||||
ret = i2c_smbus_read_block_data(client, PMBUS_IC_DEVICE_ID, buf);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (ret <= 0)
|
||||
return ret < 0 ? ret : -EIO;
|
||||
|
||||
/* Adjust length if null terminator if present */
|
||||
/* Adjust length if null terminator is present */
|
||||
buf_len = (buf[ret - 1] != '\x00' ? ret : ret - 1);
|
||||
|
||||
id_len = strlen(id);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user