diff options
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/box32stack.c | 3 | ||||
| -rw-r--r-- | src/tools/box64stack.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/tools/box32stack.c b/src/tools/box32stack.c index 0fa1460e..903996c7 100644 --- a/src/tools/box32stack.c +++ b/src/tools/box32stack.c @@ -38,11 +38,12 @@ void SetupInitialStack32(x64emu_t *emu) PushString32(emu, emu->context->argv[0]); uintptr_t p_arg0 = from_ptr(R_ESP); // push envs - uintptr_t p_envv[emu->context->envc]; + uintptr_t p_envv[emu->context->envc+1]; for (int i=emu->context->envc-1; i>=0; --i) { PushString32(emu, emu->context->envv[i]); p_envv[i] = from_ptr(R_ESP); } + p_envv[emu->context->envc] = 0; // push args, also, free the argv[] string and point to the one in the main stack uintptr_t p_argv[emu->context->argc]; for (int i=emu->context->argc-1; i>=0; --i) { diff --git a/src/tools/box64stack.c b/src/tools/box64stack.c index 9036bda4..8b5249d9 100644 --- a/src/tools/box64stack.c +++ b/src/tools/box64stack.c @@ -61,7 +61,8 @@ void SetupInitialStack(x64emu_t *emu) PushString(emu, emu->context->argv[0]); uintptr_t p_arg0 = R_RSP; // push envs - uintptr_t p_envv[emu->context->envc]; + uintptr_t p_envv[emu->context->envc+1]; + p_envv[emu->context->envc] = 0; for (int i=emu->context->envc-1; i>=0; --i) { PushString(emu, emu->context->envv[i]); box_free(emu->context->envv[i]); |