From 629457a13080052c575779e1fd9f5eb5ee6b8ad9 Mon Sep 17 00:00:00 2001 From: Corey Minyard Date: Mon, 3 Dec 2018 06:52:50 -0600 Subject: i2c: Add a length check to the SMBus write handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Avoid an overflow. Signed-off-by: Corey Minyard Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé Tested-by: Philippe Mathieu-Daudé Cc: QEMU Stable Signed-off-by: Peter Maydell --- hw/i2c/smbus.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'hw/i2c') diff --git a/hw/i2c/smbus.c b/hw/i2c/smbus.c index 6ff77c5..30028bf 100644 --- a/hw/i2c/smbus.c +++ b/hw/i2c/smbus.c @@ -193,7 +193,11 @@ static int smbus_i2c_send(I2CSlave *s, uint8_t data) switch (dev->mode) { case SMBUS_WRITE_DATA: DPRINTF("Write data %02x\n", data); - dev->data_buf[dev->data_len++] = data; + if (dev->data_len >= sizeof(dev->data_buf)) { + BADF("Too many bytes sent\n"); + } else { + dev->data_buf[dev->data_len++] = data; + } break; default: BADF("Unexpected write in state %d\n", dev->mode); -- cgit v1.1