diff options
author | 2024-08-02 14:20:16 +0000 | |
---|---|---|
committer | 2024-08-02 18:45:19 +0000 | |
commit | 83fda9b80f4da6794ef612fc3fa5fe663c36a154 (patch) | |
tree | 80b93711b75bce67b7fc63b68e0a176a7fc8392a | |
parent | 04bba053caaf822c39a211910ef1f73e344f483e (diff) |
Also bypass loading libwalkstack.so for b/349878424.
Bug: 349878424
Change-Id: I0a5f851dc7e54cd151f372d3e3eed0488ce64006
-rw-r--r-- | libnativeloader/native_loader.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libnativeloader/native_loader.cpp b/libnativeloader/native_loader.cpp index 231b3c5aea..3d24c3da14 100644 --- a/libnativeloader/native_loader.cpp +++ b/libnativeloader/native_loader.cpp @@ -272,9 +272,10 @@ jstring CreateClassLoaderNamespace(JNIEnv* env, } #if defined(ART_TARGET_ANDROID) -static bool ShouldBypassLoadingLibSoBridge() { +static bool ShouldBypassLoadingForB349878424() { struct stat st; - if (stat("/system/lib64/libsobridge.so", &st) != 0) { + if (stat("/system/lib64/libsobridge.so", &st) != 0 && + stat("/system/lib64/libwalkstack.so", &st) != 0) { return false; } std::string property = android::base::GetProperty("ro.product.build.fingerprint", ""); @@ -334,12 +335,13 @@ void* OpenNativeLibrary(JNIEnv* env, } // Handle issue b/349878424. - static bool bypass_loading_libsobridge = ShouldBypassLoadingLibSoBridge(); + static bool bypass_loading_for_b349878424 = ShouldBypassLoadingForB349878424(); - if (bypass_loading_libsobridge && strcmp("libsobridge.so", path) == 0) { + if (bypass_loading_for_b349878424 && + (strcmp("libsobridge.so", path) == 0 || strcmp("libwalkstack.so", path) == 0)) { // Load a different library to pretend the loading was successful. This // allows the device to boot. - ALOGD("Loading libbase.so instead of libsobridge.so due to b/349878424"); + ALOGD("Loading libbase.so instead of %s due to b/349878424", path); path = "libbase.so"; } |