Skip to content

Commit ca34ee6

Browse files
Sanman Pradhangroeck
authored andcommitted
hwmon: (tps53679) Fix device ID comparison and printing in tps53676_identify()
tps53676_identify() uses strncmp() to compare the device ID buffer against a byte sequence containing embedded non-printable bytes (\x53\x67\x60). strncmp() is semantically wrong for binary data comparison; use memcmp() instead. Additionally, the buffer from i2c_smbus_read_block_data() is not NUL-terminated, so printing it with "%s" in the error path is undefined behavior and may read past the buffer. Use "%*ph" to hex-dump the actual bytes returned. Per the datasheet, the expected device ID is the 6-byte sequence 54 49 53 67 60 00 ("TI\x53\x67\x60\x00"), so compare all 6 bytes including the trailing NUL. Fixes: cb3d37b ("hwmon: (pmbus/tps53679) Add support for TI TPS53676") Signed-off-by: Sanman Pradhan <psanman@juniper.net> Link: https://lore.kernel.org/r/20260330155618.77403-1-sanman.pradhan@hpe.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
1 parent a9d2fbd commit ca34ee6

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

drivers/hwmon/pmbus/tps53679.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ static int tps53676_identify(struct i2c_client *client,
175175
ret = i2c_smbus_read_block_data(client, PMBUS_IC_DEVICE_ID, buf);
176176
if (ret < 0)
177177
return ret;
178-
if (strncmp("TI\x53\x67\x60", buf, 5)) {
179-
dev_err(&client->dev, "Unexpected device ID: %s\n", buf);
178+
if (ret != 6 || memcmp(buf, "TI\x53\x67\x60\x00", 6)) {
179+
dev_err(&client->dev, "Unexpected device ID: %*ph\n", ret, buf);
180180
return -ENODEV;
181181
}
182182

0 commit comments

Comments
 (0)