diff options
author | Mike Pall <mike> | 2024-08-19 16:11:36 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2024-08-19 16:11:36 +0200 |
commit | 19db4e9b7c5e19398286adb4d953a4874cc39ae0 (patch) | |
tree | a6c2e81aa126d998a7eb8768299d280e5b2aa28a | |
parent | 86e7123bb1782a5f200ba5e83b8c4f3fbad4f7bc (diff) | |
download | luajit-19db4e9b7c5e19398286adb4d953a4874cc39ae0.tar.gz luajit-19db4e9b7c5e19398286adb4d953a4874cc39ae0.tar.bz2 luajit-19db4e9b7c5e19398286adb4d953a4874cc39ae0.zip |
Fix potential file descriptor leak in luaL_loadfile*().
Reported by Assumeru. #1249
-rw-r--r-- | src/lj_load.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lj_load.c b/src/lj_load.c index dab037b4..d92bd1b4 100644 --- a/src/lj_load.c +++ b/src/lj_load.c | |||
@@ -88,12 +88,13 @@ LUALIB_API int luaL_loadfilex(lua_State *L, const char *filename, | |||
88 | int status; | 88 | int status; |
89 | const char *chunkname; | 89 | const char *chunkname; |
90 | if (filename) { | 90 | if (filename) { |
91 | chunkname = lua_pushfstring(L, "@%s", filename); | ||
91 | ctx.fp = fopen(filename, "rb"); | 92 | ctx.fp = fopen(filename, "rb"); |
92 | if (ctx.fp == NULL) { | 93 | if (ctx.fp == NULL) { |
94 | L->top--; | ||
93 | lua_pushfstring(L, "cannot open %s: %s", filename, strerror(errno)); | 95 | lua_pushfstring(L, "cannot open %s: %s", filename, strerror(errno)); |
94 | return LUA_ERRFILE; | 96 | return LUA_ERRFILE; |
95 | } | 97 | } |
96 | chunkname = lua_pushfstring(L, "@%s", filename); | ||
97 | } else { | 98 | } else { |
98 | ctx.fp = stdin; | 99 | ctx.fp = stdin; |
99 | chunkname = "=stdin"; | 100 | chunkname = "=stdin"; |