vfio/pci: make an array larger
authorDan Carpenter <dan.carpenter@oracle.com>
Mon, 9 Nov 2015 12:24:55 +0000 (15:24 +0300)
committerAlex Williamson <alex.williamson@redhat.com>
Mon, 9 Nov 2015 15:59:11 +0000 (08:59 -0700)
commit222e684ca762e9288108fcf852eb5d08cbe10ae3
treee73a067a3970c46aedc4c9a2ec6cca5635437ef7
parent033291eccbdb1b70ffc02641edae19ac825dc75d
vfio/pci: make an array larger

Smatch complains about a possible out of bounds error:

drivers/vfio/pci/vfio_pci_config.c:1241 vfio_cap_init()
error: buffer overflow 'pci_cap_length' 20 <= 20

The problem is that pci_cap_length[] was defined as large enough to
hold "PCI_CAP_ID_AF + 1" elements.  The code in vfio_cap_init() assumes
it has PCI_CAP_ID_MAX + 1 elements.  Originally, PCI_CAP_ID_AF and
PCI_CAP_ID_MAX were the same but then we introduced PCI_CAP_ID_EA in
commit f80b0ba95964 ("PCI: Add Enhanced Allocation register entries")
so now the array is too small.

Let's fix this by making the array size PCI_CAP_ID_MAX + 1.  And let's
make a similar change to pci_ext_cap_length[] for consistency.  Also
both these arrays can be made const.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/pci/vfio_pci_config.c