aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2020-09-05 20:02:54 +0200
committerMike Pall <mike>2020-09-05 20:02:54 +0200
commit90e65514dda3994253c1e3007f63da7ace8f6b7b (patch)
treee48d06ebb00297a73ae0d5a21851b192698cf5bd /src
parente296f56b825c688c3530a981dc6b495d972f3d01 (diff)
downloadluajit-90e65514dda3994253c1e3007f63da7ace8f6b7b.tar.gz
luajit-90e65514dda3994253c1e3007f63da7ace8f6b7b.tar.bz2
luajit-90e65514dda3994253c1e3007f63da7ace8f6b7b.zip
Limit path length passed to C library loader.
Diffstat (limited to 'src')
-rw-r--r--src/lib_package.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lib_package.c b/src/lib_package.c
index a8bdcf17..f5ba3cbc 100644
--- a/src/lib_package.c
+++ b/src/lib_package.c
@@ -208,7 +208,12 @@ static const char *mksymname(lua_State *L, const char *modname,
208 208
209static int ll_loadfunc(lua_State *L, const char *path, const char *name, int r) 209static int ll_loadfunc(lua_State *L, const char *path, const char *name, int r)
210{ 210{
211 void **reg = ll_register(L, path); 211 void **reg;
212 if (strlen(path) >= 4096) {
213 lua_pushliteral(L, "path too long");
214 return PACKAGE_ERR_LIB;
215 }
216 reg = ll_register(L, path);
212 if (*reg == NULL) *reg = ll_load(L, path, (*name == '*')); 217 if (*reg == NULL) *reg = ll_load(L, path, (*name == '*'));
213 if (*reg == NULL) { 218 if (*reg == NULL) {
214 return PACKAGE_ERR_LIB; /* Unable to load library. */ 219 return PACKAGE_ERR_LIB; /* Unable to load library. */