فهرست منبع

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

https://gitee.com/openLuat/LuatOS/issues/ICOJMO
Wendal Chen 8 ماه پیش
والد
کامیت
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) {
-  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);
   if (re == 0)
     re = checkload(L, (luaL_loadfile(L, filename) == LUA_OK), filename);