diff options
author | Mike Pall <mike> | 2020-01-13 14:28:43 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2020-01-13 14:28:43 +0100 |
commit | 820339960123dc78a7ce03edf53fcf4fdae0e55d (patch) | |
tree | 5be584eb5d8cf65ce8d48a0e43d97f3f2b72d873 /src/lj_lex.c | |
parent | 45a7e5073ce0a59465fef0b80bb08bd4e76b7979 (diff) | |
download | luajit2-820339960123dc78a7ce03edf53fcf4fdae0e55d.tar.gz |
Fix embedded bytecode loader.
Diffstat (limited to 'src/lj_lex.c')
-rw-r--r-- | src/lj_lex.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lj_lex.c b/src/lj_lex.c index 1d063f8f..ecfcc015 100644 --- a/src/lj_lex.c +++ b/src/lj_lex.c @@ -49,6 +49,10 @@ static int fillbuf(LexState *ls) size_t sz; const char *buf = ls->rfunc(ls->L, ls->rdata, &sz); if (buf == NULL || sz == 0) return END_OF_STREAM; + if (sz >= LJ_MAX_MEM) { + if (sz != ~(size_t)0) lj_err_mem(ls->L); + ls->endmark = 1; + } ls->n = (MSize)sz - 1; ls->p = buf; return char2int(*(ls->p++)); @@ -382,6 +386,7 @@ int lj_lex_setup(lua_State *L, LexState *ls) ls->lookahead = TK_eof; /* No look-ahead token. */ ls->linenumber = 1; ls->lastline = 1; + ls->endmark = 0; lj_str_resizebuf(ls->L, &ls->sb, LJ_MIN_SBUF); next(ls); /* Read-ahead first char. */ if (ls->current == 0xef && ls->n >= 2 && char2int(ls->p[0]) == 0xbb && |