瀏覽代碼

[modify][components][utilities]check if the ve_exporter_num is out of bounds.

Signed-off-by: WillianChan <chentingwei@rt-thread.com>
WillianChan 3 年之前
父節點
當前提交
e53ae3ddfa
共有 2 個文件被更改,包括 5 次插入2 次删除
  1. 3 0
      components/utilities/var_export/var_export.c
  2. 2 2
      components/utilities/var_export/var_export_cmd.c

+ 3 - 0
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];

+ 2 - 2
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
         {