diff options
author | Mike Pall <mike> | 2020-09-05 20:02:54 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2020-09-05 20:02:54 +0200 |
commit | 90e65514dda3994253c1e3007f63da7ace8f6b7b (patch) | |
tree | e48d06ebb00297a73ae0d5a21851b192698cf5bd /src | |
parent | e296f56b825c688c3530a981dc6b495d972f3d01 (diff) | |
download | luajit-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.c | 7 |
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 | ||
209 | static int ll_loadfunc(lua_State *L, const char *path, const char *name, int r) | 209 | static 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. */ |