- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在将 Lua (5.1) 嵌入到 C/C++ 应用程序中。
我正在使用 LuaL_openlibs()
函数加载基础库。但是,此函数加载了一些我想禁用的其他库,以便我的 Lua 脚本无法使用它们。
具体来说,我想禁用 IO 和 OS 模块。有没有我可以调用的函数来以编程方式禁用(或卸载)这些模块,以便我可以创建一个安全的沙箱环境来运行 Lua 脚本?
最佳答案
luaL_openlibs
只是遍历在同一个文件中声明的库加载器列表。只需删除/注释掉 luaopen_io
和 luaopen_os
行。完成。
如果您不喜欢编辑 Lua 源代码,那么您可以定义自己的函数,省去这两个库:
#define LUA_LIB
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
static const luaL_Reg lualibs[] = {
{"", luaopen_base},
{LUA_LOADLIBNAME, luaopen_package},
{LUA_TABLIBNAME, luaopen_table},
{LUA_STRLIBNAME, luaopen_string},
{LUA_MATHLIBNAME, luaopen_math},
{LUA_DBLIBNAME, luaopen_debug},
{NULL, NULL}
};
LUALIB_API void my_openlibs (lua_State *L) {
const luaL_Reg *lib = lualibs;
for (; lib->func; lib++) {
lua_pushcfunction(L, lib->func);
lua_pushstring(L, lib->name);
lua_call(L, 1, 0);
}
}
关于c++ - LuaL_openlibs() 和沙盒脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4551101/
我正在将 Lua (5.1) 嵌入到 C/C++ 应用程序中。 我正在使用 LuaL_openlibs() 函数加载基础库。但是,此函数加载了一些我想禁用的其他库,以便我的 Lua 脚本无法使用它们。
我正在编写一个将 Lua 嵌入到 C 程序中的简单测试。 我在 Windows/Mingw 和 Linux 上遇到同样的问题。这是我在 Linux 上使用的 gcc 命令: gcc -Wall -o
我正在调整一个为 Lua < 5.2 编写的库,然后接到了一个我不知道的等价物的电话: luaL_openlib(L, "Polycore", polycoreLib, 0); polycoreLib
我想在我的 C 应用程序中嵌入一些 Lua 脚本......专门用于日志记录。我以前使用过 LOG4C,但实际上我更喜欢“Lua Logging”...... 注意:我根本不是 Lua 专家,但我正在
我是一名优秀的程序员,十分优秀!