Просмотр исходного кода

fix: vm,加载lua库的代码,文件名的buff太小,文件名长就会溢出,触发内存异常报错

https://gitee.com/openLuat/LuatOS/issues/ICOJMO
Wendal Chen 8 месяцев назад
Родитель
Сommit
69a4edc4bc
1 измененных файлов с 7 добавлено и 2 удалено
  1. 7 2
      lua/src/loadlib.c

+ 7 - 2
lua/src/loadlib.c

@@ -143,8 +143,13 @@ int luat_search_module(const char* name, char* filename) {
 }
 }
 
 
 static int searcher_Lua (lua_State *L) {
 static int searcher_Lua (lua_State *L) {
-  char filename[32] = {0};
-  const char *name = luaL_checkstring(L, 1);
+  char filename[64] = {0};
+  size_t len = 0;
+  const char *name = luaL_checklstring(L, 1, &len);
+  if (len < 1 || len > 48) {
+    lua_pushfstring(L, "module name '%s' len %d is invalid", name, len);
+    return lua_error(L);
+  }
   int re = luat_search_module(name, filename);
   int re = luat_search_module(name, filename);
   if (re == 0)
   if (re == 0)
     re = checkload(L, (luaL_loadfile(L, filename) == LUA_OK), filename);
     re = checkload(L, (luaL_loadfile(L, filename) == LUA_OK), filename);