From 74ed589b84d0a41bfee2d6a687073823aa0eebc5 Mon Sep 17 00:00:00 2001 From: fmarasco Date: Wed, 10 Sep 2025 15:09:01 -0400 Subject: [PATCH 1/3] add jni for san --- .../applications/events/LogManager.java | 12 ++++ .../events/LogManagerProvider.java | 13 ++++ lib/jni/LogManager_jni.cpp | 69 ++++++++++++++++++- 3 files changed, 93 insertions(+), 1 deletion(-) diff --git a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/LogManager.java b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/LogManager.java index 9fb267fdf..c968257de 100644 --- a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/LogManager.java +++ b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/LogManager.java @@ -960,6 +960,18 @@ public static boolean unregisterSignals() { return Signals.isInitialized() && nativeUnregisterSignalsOnDefaultLogManager(); } + private static native boolean nativeRegisterSanitizerOnDefaultLogManager(); + + public static boolean registerSanitizer() { + return Sanitizer.isInitialized() && nativeRegisterSanitizerOnDefaultLogManager(); + } + + private static native boolean nativeUnregisterSanitizerOnDefaultLogManager(); + + public static boolean unregisterSanitizer() { + return Sanitizer.isInitialized() && nativeUnregisterSanitizerOnDefaultLogManager(); + } + public static native void pauseActivity(); public static native void resumeActivity(); public static native void waitPause(); diff --git a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/LogManagerProvider.java b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/LogManagerProvider.java index 1326c6d4e..73a3cdfed 100644 --- a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/LogManagerProvider.java +++ b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/LogManagerProvider.java @@ -313,6 +313,19 @@ public boolean unregisterSignals() { return Signals.isInitialized() && nativeUnregisterSignals(nativeLogManager); } + private native boolean nativeRegisterSanitizer(long nativeLogManager); + @Override + public boolean registerSanitizer() { + return Sanitizer.isInitialized() && nativeRegisterSanitizer(nativeLogManager); + } + + private native boolean nativeUnregisterSanitizer(long nativeLogManager); + @Override + public boolean unregisterSanitizer() { + return Sanitizer.isInitialized() && nativeUnregisterSanitizer(nativeLogManager); + } + + protected native void nativePauseActivity(long nativeLogManager); protected native void nativeResumeActivity(long nativeLogManager); protected native void nativeWaitPause(long nativeLogManager); diff --git a/lib/jni/LogManager_jni.cpp b/lib/jni/LogManager_jni.cpp index 078973d2a..a06043765 100644 --- a/lib/jni/LogManager_jni.cpp +++ b/lib/jni/LogManager_jni.cpp @@ -18,6 +18,11 @@ #include "modules/signals/Signals.hpp" #define HAS_SS true #endif +#if __has_include("modules/sanitizer/sanitizer.hpp") +#include "SanitizerHelper.hpp" +#include "modules/sanitizer/sanitizer.hpp" +#define HAS_SAN true +#endif #endif #include @@ -339,13 +344,40 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_microsoft_applications_events_LogManager_nativeUnregisterSignalsOnDefaultLogManager( JNIEnv *env, jclass clazz) { -#if HAS_SS +#if HAS_SAN auto logManager = WrapperLogManager::GetInstance(); auto ss = SignalsHelper::GetSignalsInspector(); if (ss != nullptr) { logManager->RemoveDataInspector(ss->GetName()); return true; } +#endif + return false; + } + + JNIEXPORT jboolean JNICALL + Java_com_microsoft_applications_events_LogManager_nativeRegisterSanitizerOnDefaultLogManager(JNIEnv *env, jclass clazz) { +#if HAS_SAN + auto logManager = WrapperLogManager::GetInstance(); + auto ss = SanitizerHelper::GetSanitizerInspector(); + if (ss != nullptr) { + logManager->SetDataInspector(ss); + return true; + } +#endif + return false; + } + + JNIEXPORT jboolean JNICALL + Java_com_microsoft_applications_events_LogManager_nativeUnregisterSanitizerOnDefaultLogManager( + JNIEnv *env, jclass clazz) { +#if HAS_SAN + auto logManager = WrapperLogManager::GetInstance(); + auto ss = SanitizerHelper::GetSanitizerInspector(); + if (ss != nullptr) { + logManager->RemoveDataInspector(ss->GetName()); + return true; + } #endif return false; } @@ -1640,6 +1672,24 @@ Java_com_microsoft_applications_events_LogManagerProvider_00024LogManagerImpl_na return false; } +extern "C" +JNIEXPORT jboolean JNICALL +Java_com_microsoft_applications_events_LogManagerProvider_00024LogManagerImpl_nativeRegisterSanitizer( + JNIEnv *env, + jobject thiz, + jlong native_log_manager) { +#if HAS_SAN + auto logManager = getLogManager(native_log_manager); + auto sa = SanitizerHelper::GetSanitizer(); + if(sa != nullptr) { + logManager->SetDataInspector(sa); + return true; + } +#endif + return false; +} + + extern "C" JNIEXPORT void JNICALL Java_com_microsoft_applications_events_LogManager_pauseActivity(JNIEnv *env, jclass clazz) { @@ -1734,6 +1784,23 @@ Java_com_microsoft_applications_events_LogManagerProvider_00024LogManagerImpl_na return false; } +extern "C" +JNIEXPORT jboolean JNICALL +Java_com_microsoft_applications_events_LogManagerProvider_00024LogManagerImpl_nativeUnregisterSanitizer( + JNIEnv *env, + jobject thiz, + jlong native_log_manager) { +#if HAS_SAN + auto logManager = getLogManager(native_log_manager); + auto sa = SanitizerHelper::GetSanitizer(); + if(sa != nullptr) { + logManager->RemoveDataInspector(sa->GetName()); + return true; + } +#endif + return false; +} + extern "C" JNIEXPORT jboolean JNICALL Java_com_microsoft_applications_events_LogManagerProvider_00024LogManagerImpl_nativeStartActivity( From 342370aef9be70ff67b88c3663956702fa6e94dc Mon Sep 17 00:00:00 2001 From: fmarasco Date: Wed, 10 Sep 2025 15:12:34 -0400 Subject: [PATCH 2/3] fixed change in existing code --- lib/jni/LogManager_jni.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/jni/LogManager_jni.cpp b/lib/jni/LogManager_jni.cpp index a06043765..41eed6b76 100644 --- a/lib/jni/LogManager_jni.cpp +++ b/lib/jni/LogManager_jni.cpp @@ -344,7 +344,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_microsoft_applications_events_LogManager_nativeUnregisterSignalsOnDefaultLogManager( JNIEnv *env, jclass clazz) { -#if HAS_SAN +#if HAS_SS auto logManager = WrapperLogManager::GetInstance(); auto ss = SignalsHelper::GetSignalsInspector(); if (ss != nullptr) { From 2ad2706c669bc9b6f22f980d78a29897ac126cbe Mon Sep 17 00:00:00 2001 From: fmarasco Date: Wed, 10 Sep 2025 15:56:02 -0400 Subject: [PATCH 3/3] add methods to interface --- .../java/com/microsoft/applications/events/ILogManager.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/ILogManager.java b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/ILogManager.java index 9b7e785a8..332331cb1 100644 --- a/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/ILogManager.java +++ b/lib/android_build/maesdk/src/main/java/com/microsoft/applications/events/ILogManager.java @@ -75,6 +75,10 @@ public interface ILogManager extends AutoCloseable { public boolean unregisterSignals(); + public boolean registerSanitizer(); + + public boolean unregisterSanitizer(); + public void pauseActivity(); public void resumeActivity(); public void waitPause();