Patrick Georgi has submitted this change and it was merged. ( https://review.coreboot.org/c/coreboot/+/34593 )
Change subject: vc/cavium/bdk/libdram: Add array bounds check ......................................................................
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 jgarber1@ualberta.ca Found-by: Coverity CID 1393971 Reviewed-on: https://review.coreboot.org/c/coreboot/+/34593 Reviewed-by: Patrick Rudolph siro@das-labor.org Tested-by: build bot (Jenkins) no-reply@coreboot.org --- M src/vendorcode/cavium/bdk/libdram/lib_octeon_shared.c 1 file changed, 5 insertions(+), 0 deletions(-)
Approvals: build bot (Jenkins): Verified Patrick Rudolph: Looks good to me, approved
diff --git a/src/vendorcode/cavium/bdk/libdram/lib_octeon_shared.c b/src/vendorcode/cavium/bdk/libdram/lib_octeon_shared.c index 7ee91c2..cb090f7 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 @@ 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]));