diff --git a/components/utilities/var_export/var_export.c b/components/utilities/var_export/var_export.c index d90323edde..f4623dec04 100644 --- a/components/utilities/var_export/var_export.c +++ b/components/utilities/var_export/var_export.c @@ -69,6 +69,9 @@ int var_export_init(void) ve_exporter_table = (const ve_exporter_t *)ptr_begin; ve_exporter_num = (ptr_end - ptr_begin) / (sizeof(struct ve_exporter) / sizeof(unsigned int)) + 1; + /* check if the ve_exporter_num is out of bounds */ + RT_ASSERT(ve_exporter_num < (sizeof(ve_exporter_tab) / sizeof(ve_exporter_t))); + for (index_i = 0; index_i < ve_exporter_num; index_i++) { ve_exporter_tab[index_i] = ve_exporter_table[index_i]; diff --git a/components/utilities/var_export/var_export_cmd.c b/components/utilities/var_export/var_export_cmd.c index 85f43507f1..fba3cc92bb 100644 --- a/components/utilities/var_export/var_export_cmd.c +++ b/components/utilities/var_export/var_export_cmd.c @@ -67,7 +67,7 @@ static int ve_find_module(int argc, char **argv) exporter = ve_iter_next(&iter); if (exporter == RT_NULL) { - return RT_EOK; + return -RT_ERROR; } else { @@ -104,7 +104,7 @@ static int ve_find_value(int argc, char **argv) exporter = ve_iter_next(&iter); if (exporter == RT_NULL) { - return RT_EOK; + return -RT_ERROR; } else {