From f57687f3ab4bf8246d5561693463e32e5301b3cf Mon Sep 17 00:00:00 2001 From: Diego Roux Date: Sun, 20 Oct 2024 17:16:58 -0600 Subject: [PATCH] vpi_get_value_array: added out of bonds check. Signed-off-by: Diego Roux --- include/verilated_vpi.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/verilated_vpi.cpp b/include/verilated_vpi.cpp index 0e81e9657..57e168dd0 100644 --- a/include/verilated_vpi.cpp +++ b/include/verilated_vpi.cpp @@ -3359,6 +3359,14 @@ void vpi_get_value_array(vpiHandle object, p_vpi_arrayvalue arrayvalue_p, __func__, vop->fullname(), varp->dims()); } + int minRange = fmin(vop->rangep()->left(), vop->rangep()->right()); + int maxRange = fmax(vop->rangep()->left(), vop->rangep()->right()); + + if ((index_p[0] > maxRange) || (index_p[0] < minRange)) { + VL_VPI_ERROR_(__FILE__, __LINE__, "%s: index %u for object %s is out of bounds [%u,%u]", + __func__, index_p[0], vop->fullname(), minRange, maxRange); + } + vl_get_value_array(object, arrayvalue_p, index_p, num); }