mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-04-19 21:43:27 +00:00
fix stackover read
This commit is contained in:
parent
1c70983df1
commit
d87a18c473
@ -6,6 +6,7 @@
|
|||||||
# Debugged and (now seriously) modified by Ronan Collobert, for Torch7
|
# Debugged and (now seriously) modified by Ronan Collobert, for Torch7
|
||||||
|
|
||||||
#project(LuaJIT C ASM)
|
#project(LuaJIT C ASM)
|
||||||
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||||
|
|
||||||
SET(LUAJIT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
SET(LUAJIT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
@ -427,3 +428,5 @@ MACRO(LUA_ADD_EXECUTABLE luajit_target)
|
|||||||
LUAJIT_add_custom_commands(${luajit_target} ${ARGN})
|
LUAJIT_add_custom_commands(${luajit_target} ${ARGN})
|
||||||
add_executable(${luajit_target} ${target_srcs})
|
add_executable(${luajit_target} ${target_srcs})
|
||||||
ENDMACRO(LUA_ADD_EXECUTABLE luajit_target)
|
ENDMACRO(LUA_ADD_EXECUTABLE luajit_target)
|
||||||
|
|
||||||
|
install(TARGETS luajit-5.1 RUNTIME DESTINATION .)
|
||||||
|
@ -134,21 +134,34 @@ static const char *reader_string(lua_State *L, void *ud, size_t *size)
|
|||||||
return ctx->str;
|
return ctx->str;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* hack_gemcore(const char* base, size_t size)
|
static const char *custom_strstr(const char *haystack, int haystack_length, const char *needle) {
|
||||||
|
int needle_length = strlen(needle);
|
||||||
|
|
||||||
|
for (int i = 0; i <= haystack_length - needle_length; ++i) {
|
||||||
|
if (memcmp(haystack + i, needle, needle_length) == 0) {
|
||||||
|
return (char *)(haystack + i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char* hack_gemcore(const char* base, size_t size)
|
||||||
{
|
{
|
||||||
char* target;
|
char* target;
|
||||||
const char* t = base;
|
const char* t = base;
|
||||||
char* s = NULL, *p = NULL, *q = NULL;
|
const char* s = NULL, *p = NULL;
|
||||||
if (strstr(base, "return _debug_getinfo") == NULL) return NULL;
|
char *q = NULL;
|
||||||
|
if (custom_strstr(base, size, "return _debug_getinfo") == NULL) return NULL;
|
||||||
|
|
||||||
target = (char*)malloc(size * 2 + 32);
|
target = (char*)malloc(size * 2 + 32);
|
||||||
memset(target, 0, size * 2 + 32);
|
memset(target, 0, size * 2 + 32);
|
||||||
q = target;
|
q = target;
|
||||||
|
|
||||||
while (
|
while (
|
||||||
((p = strstr(t, "return _debug_")) != NULL) ||
|
((p = custom_strstr(t, size, "return _debug_")) != NULL) ||
|
||||||
((p = strstr(t, "return _getfenv")) != NULL) ||
|
((p = custom_strstr(t, size, "return _getfenv")) != NULL) ||
|
||||||
((p = strstr(t, "return _setfenv")) != NULL)
|
((p = custom_strstr(t, size, "return _setfenv")) != NULL)
|
||||||
) {
|
) {
|
||||||
memcpy(q, t, p - t);
|
memcpy(q, t, p - t);
|
||||||
q += p - t;
|
q += p - t;
|
||||||
@ -159,7 +172,7 @@ char* hack_gemcore(const char* base, size_t size)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
s = strstr(p, "end");
|
s = custom_strstr(p, size - (p - base) - 1, "end");
|
||||||
if (s != NULL) {
|
if (s != NULL) {
|
||||||
memcpy(q, p, s - p); q += s - p;
|
memcpy(q, p, s - p); q += s - p;
|
||||||
memcpy(q, ", nil end", 9); q += 9;
|
memcpy(q, ", nil end", 9); q += 9;
|
||||||
|
Loading…
Reference in New Issue
Block a user