Message ID | 20181203125250.11195-1-minyard@acm.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | i2c: Add a length check to the SMBus write handling | expand |
On Mon, 3 Dec 2018 at 12:53, <minyard@acm.org> wrote: > > From: Corey Minyard <cminyard@mvista.com> > > Avoid an overflow. > > Signed-off-by: Corey Minyard <cminyard@mvista.com> > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Cc: QEMU Stable <qemu-stable@nongnu.org> Applied to master for rc4, thanks. -- PMM
diff --git a/hw/i2c/smbus.c b/hw/i2c/smbus.c index 6ff77c582f..30028bfcc2 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);