From 9f378d3b0395b2e7b5a8972cf69f1c6fdcabfe09 Mon Sep 17 00:00:00 2001 From: Jacob Garber Date: Fri, 26 Jul 2019 15:20:47 -0600 Subject: vc/cavium/bdk/libdram: Add array bounds check Ensure that best_en_idx is within bounds before accessing the _en array. Change-Id: Ifa6259e28875a8cf8199896bda7982370ccaa277 Signed-off-by: Jacob Garber Found-by: Coverity CID 1393971 Reviewed-on: https://review.coreboot.org/c/coreboot/+/34593 Reviewed-by: Patrick Rudolph Tested-by: build bot (Jenkins) --- src/vendorcode/cavium/bdk/libdram/lib_octeon_shared.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/vendorcode/cavium/bdk/libdram/lib_octeon_shared.c b/src/vendorcode/cavium/bdk/libdram/lib_octeon_shared.c index 7ee91c27c3..cb090f7da5 100644 --- a/src/vendorcode/cavium/bdk/libdram/lib_octeon_shared.c +++ b/src/vendorcode/cavium/bdk/libdram/lib_octeon_shared.c @@ -1141,6 +1141,11 @@ int initialize_ddr_clock(bdk_node_t node, override_pll_settings = 1; } + if (best_en_idx >= ARRAY_SIZE(_en)) { + error_print("ERROR: best_en_idx %u exceeds _en array size\n", best_en_idx); + return -1; + } + if (override_pll_settings) { best_pll_MHz = ddr_ref_hertz * (best_clkf+1) / (best_clkr+1) / 1000000; best_calculated_ddr_hertz = ddr_ref_hertz * (best_clkf + 1) / ((best_clkr + 1) * (_en[best_en_idx])); -- cgit v1.2.3