|
From: Jean D. <jde...@su...> - 2015-09-09 08:54:26
|
The first byte of the data array holds the length, so the actual data
length is the value of that byte plus one.
Bug found by running i2cdump in I2C block mode.
---
coregrind/m_syswrap/syswrap-linux.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- valgrind.orig/coregrind/m_syswrap/syswrap-linux.c 2015-09-09 08:31:30.680912677 +0200
+++ valgrind/coregrind/m_syswrap/syswrap-linux.c 2015-09-09 08:37:43.670491914 +0200
@@ -6884,7 +6884,7 @@ PRE(sys_ioctl)
case VKI_I2C_SMBUS_I2C_BLOCK_BROKEN:
case VKI_I2C_SMBUS_BLOCK_PROC_CALL:
case VKI_I2C_SMBUS_I2C_BLOCK_DATA:
- size = vkis->data->block[0];
+ size = 1 + vkis->data->block[0];
break;
default:
size = 0;
@@ -9410,7 +9410,7 @@ POST(sys_ioctl)
case VKI_I2C_SMBUS_I2C_BLOCK_BROKEN:
case VKI_I2C_SMBUS_BLOCK_PROC_CALL:
case VKI_I2C_SMBUS_I2C_BLOCK_DATA:
- size = vkis->data->block[0];
+ size = 1 + vkis->data->block[0];
break;
default:
size = 0;
--
Jean Delvare
SUSE L3 Support
|