vfio: fix array bounds check
authorAlejandro Lucero <alejandro.lucero@netronome.com>
Fri, 12 May 2017 10:18:25 +0000 (11:18 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Mon, 5 Jun 2017 19:02:56 +0000 (21:02 +0200)
Checking against VFIO_MAX_GROUPS goes beyond the maximum array
index which should be (VFIO_MAX_GROUPS - 1).

Coverity issue: 144555, 144556, 144557
Fixes: 94c0776b1bad ("support hotplug")
Cc: stable@dpdk.org
Signed-off-by: Alejandro Lucero <alejandro.lucero@netronome.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
lib/librte_eal/linuxapp/eal/eal_vfio.c

index 53ac725..946df7e 100644 (file)
@@ -189,7 +189,7 @@ vfio_group_device_get(int vfio_group_fd)
        int i;
 
        i = get_vfio_group_idx(vfio_group_fd);
-       if (i < 0 || i > VFIO_MAX_GROUPS)
+       if (i < 0 || i > (VFIO_MAX_GROUPS - 1))
                RTE_LOG(ERR, EAL, "  wrong vfio_group index (%d)\n", i);
        else
                vfio_cfg.vfio_groups[i].devices++;
@@ -201,7 +201,7 @@ vfio_group_device_put(int vfio_group_fd)
        int i;
 
        i = get_vfio_group_idx(vfio_group_fd);
-       if (i < 0 || i > VFIO_MAX_GROUPS)
+       if (i < 0 || i > (VFIO_MAX_GROUPS - 1))
                RTE_LOG(ERR, EAL, "  wrong vfio_group index (%d)\n", i);
        else
                vfio_cfg.vfio_groups[i].devices--;
@@ -213,7 +213,7 @@ vfio_group_device_count(int vfio_group_fd)
        int i;
 
        i = get_vfio_group_idx(vfio_group_fd);
-       if (i < 0 || i > VFIO_MAX_GROUPS) {
+       if (i < 0 || i > (VFIO_MAX_GROUPS - 1)) {
                RTE_LOG(ERR, EAL, "  wrong vfio_group index (%d)\n", i);
                return -1;
        }