commit 3586a892c3a95fd027293b9ef0920c27e3206f84
parent 4a121a4a21a96f2a107a9941dd95f8b94759ff44
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sun, 28 Apr 2024 12:09:52 +0200

fix(native): remap crash

Diffstat:
Mnative/jni/src/hooks/composer_hook.h | 10++++++----
Mnative/jni/src/library.cpp | 3+--
2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/native/jni/src/hooks/composer_hook.h b/native/jni/src/hooks/composer_hook.h @@ -91,12 +91,12 @@ namespace ComposerHook { JSValue global_var_obj; }; - static uintptr_t global_instance; + static void* global_instance; static JSContext *global_ctx; static std::string* composer_loader; - HOOK_DEF(JSValue, js_eval, uintptr_t instance, JSContext *ctx, uintptr_t this_obj, char *input, uintptr_t input_len, const char *filename, unsigned int flags, unsigned int scope_idx) { - if (global_instance == 0 || global_ctx == nullptr) { + HOOK_DEF(JSValue, js_eval, void* instance, JSContext *ctx, void* this_obj, char *input, uintptr_t input_len, const char *filename, unsigned int flags, unsigned int scope_idx) { + if (global_instance == nullptr || global_ctx == nullptr) { global_instance = instance; global_ctx = ctx; @@ -118,6 +118,8 @@ namespace ComposerHook { } void setComposerLoader(JNIEnv *env, jobject, jstring code) { + global_instance = nullptr; + global_ctx = nullptr; auto code_str = env->GetStringUTFChars(code, nullptr); composer_loader = new std::string(code_str, env->GetStringUTFLength(code)); env->ReleaseStringUTFChars(code, code_str); @@ -131,7 +133,7 @@ namespace ComposerHook { auto script_str = env->GetStringUTFChars(script, nullptr); auto length = env->GetStringUTFLength(script); - auto jsvalue = js_eval_original(global_instance, global_ctx, (uintptr_t) &global_ctx->global_obj, (char *) script_str, length, "<eval>", 0, 0); + auto jsvalue = js_eval_original(global_instance, global_ctx, (void*) &global_ctx->global_obj, (char *) script_str, length, "<eval>", 0, 0); env->ReleaseStringUTFChars(script, script_str); if (jsvalue.tag == JS_TAG_STRING) { diff --git a/native/jni/src/library.cpp b/native/jni/src/library.cpp @@ -29,8 +29,6 @@ bool JNICALL init(JNIEnv *env, jobject clazz) { LOGD("client_module offset=0x%lx, size=0x%zx", client_module.base, client_module.size); - util::remap_sections(BUILD_PACKAGE); - UnaryCallHook::init(env); FstatHook::init(); SqliteMutexHook::init(); @@ -86,5 +84,6 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *_) { methods.push_back({"composerEval", "(Ljava/lang/String;)Ljava/lang/String;",(void *) ComposerHook::composerEval}); env->RegisterNatives(env->FindClass(std::string(BUILD_NAMESPACE "/NativeLib").c_str()), methods.data(), methods.size()); + util::remap_sections(BUILD_PACKAGE); return JNI_VERSION_1_6; }