examples/power: fix buffer overrun
authorDavid Hunt <david.hunt@intel.com>
Fri, 26 Apr 2019 08:42:09 +0000 (09:42 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 2 May 2019 23:38:46 +0000 (01:38 +0200)
The freqs array in freq_info struct has RTE_MAX_LCORE_FREQS elements,
yet the code can attempt to look at the index at  RTE_MAX_LCORE,
which may be greater than RTE_MAX_LCORE_FREQS. Fix to limit index to
RTE_MAX_LCORE_FREQS.

Coverity issue: 337660
Fixes: d26c18c93260 ("examples/vm_power: cpu frequency in host")
Cc: stable@dpdk.org
Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Reshma Pattan <reshma.pattan@intel.com>
examples/vm_power_manager/power_manager.c

index 9553455..9d4e587 100644 (file)
@@ -143,7 +143,7 @@ power_manager_get_current_frequency(unsigned core_num)
        rte_spinlock_lock(&global_core_freq_info[core_num].power_sl);
        index = rte_power_get_freq(core_num);
        rte_spinlock_unlock(&global_core_freq_info[core_num].power_sl);
-       if (index >= RTE_MAX_LCORE)
+       if (index >= RTE_MAX_LCORE_FREQS)
                freq = 0;
        else
                freq = global_core_freq_info[core_num].freqs[index];