Loading core/java/android/webkit/WebViewLibraryLoader.java +5 −8 Original line number Original line Diff line number Diff line Loading @@ -215,12 +215,10 @@ class WebViewLibraryLoader { return WebViewFactory.LIBLOAD_ADDRESS_SPACE_NOT_RESERVED; return WebViewFactory.LIBLOAD_ADDRESS_SPACE_NOT_RESERVED; } } String[] args = getWebViewNativeLibraryPaths(packageInfo); final String libraryFileName = int result = nativeLoadWithRelroFile(args[0] /* path32 */, WebViewFactory.getWebViewLibrary(packageInfo.applicationInfo); args[1] /* path64 */, int result = nativeLoadWithRelroFile(libraryFileName, CHROMIUM_WEBVIEW_NATIVE_RELRO_32, CHROMIUM_WEBVIEW_NATIVE_RELRO_32, CHROMIUM_WEBVIEW_NATIVE_RELRO_64, clazzLoader); CHROMIUM_WEBVIEW_NATIVE_RELRO_64, clazzLoader); if (result != WebViewFactory.LIBLOAD_SUCCESS) { if (result != WebViewFactory.LIBLOAD_SUCCESS) { Log.w(LOGTAG, "failed to load with relro file, proceeding without"); Log.w(LOGTAG, "failed to load with relro file, proceeding without"); } else if (DEBUG) { } else if (DEBUG) { Loading Loading @@ -317,7 +315,6 @@ class WebViewLibraryLoader { static native boolean nativeReserveAddressSpace(long addressSpaceToReserve); static native boolean nativeReserveAddressSpace(long addressSpaceToReserve); static native boolean nativeCreateRelroFile(String lib32, String lib64, static native boolean nativeCreateRelroFile(String lib32, String lib64, String relro32, String relro64); String relro32, String relro64); static native int nativeLoadWithRelroFile(String lib32, String lib64, static native int nativeLoadWithRelroFile(String lib, String relro32, String relro64, String relro32, String relro64, ClassLoader clazzLoader); ClassLoader clazzLoader); } } native/webview/loader/loader.cpp +5 −7 Original line number Original line Diff line number Diff line Loading @@ -167,16 +167,14 @@ jboolean CreateRelroFile(JNIEnv* env, jclass, jstring lib32, jstring lib64, return ret; return ret; } } jint LoadWithRelroFile(JNIEnv* env, jclass, jstring lib32, jstring lib64, jint LoadWithRelroFile(JNIEnv* env, jclass, jstring lib, jstring relro32, jstring relro32, jstring relro64, jobject clazzLoader) { jstring relro64, jobject clazzLoader) { #ifdef __LP64__ #ifdef __LP64__ jstring lib = lib64; jstring relro = relro64; jstring relro = relro64; (void)lib32; (void)relro32; (void)relro32; #else #else jstring lib = lib32; jstring relro = relro32; jstring relro = relro32; (void)lib64; (void)relro64; (void)relro64; #endif #endif jint ret = LIBLOAD_FAILED_JNI_CALL; jint ret = LIBLOAD_FAILED_JNI_CALL; const char* lib_utf8 = env->GetStringUTFChars(lib, NULL); const char* lib_utf8 = env->GetStringUTFChars(lib, NULL); Loading @@ -201,7 +199,7 @@ const JNINativeMethod kJniMethods[] = { "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z", reinterpret_cast<void*>(CreateRelroFile) }, reinterpret_cast<void*>(CreateRelroFile) }, { "nativeLoadWithRelroFile", { "nativeLoadWithRelroFile", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)I", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)I", reinterpret_cast<void*>(LoadWithRelroFile) }, reinterpret_cast<void*>(LoadWithRelroFile) }, }; }; Loading Loading
core/java/android/webkit/WebViewLibraryLoader.java +5 −8 Original line number Original line Diff line number Diff line Loading @@ -215,12 +215,10 @@ class WebViewLibraryLoader { return WebViewFactory.LIBLOAD_ADDRESS_SPACE_NOT_RESERVED; return WebViewFactory.LIBLOAD_ADDRESS_SPACE_NOT_RESERVED; } } String[] args = getWebViewNativeLibraryPaths(packageInfo); final String libraryFileName = int result = nativeLoadWithRelroFile(args[0] /* path32 */, WebViewFactory.getWebViewLibrary(packageInfo.applicationInfo); args[1] /* path64 */, int result = nativeLoadWithRelroFile(libraryFileName, CHROMIUM_WEBVIEW_NATIVE_RELRO_32, CHROMIUM_WEBVIEW_NATIVE_RELRO_32, CHROMIUM_WEBVIEW_NATIVE_RELRO_64, clazzLoader); CHROMIUM_WEBVIEW_NATIVE_RELRO_64, clazzLoader); if (result != WebViewFactory.LIBLOAD_SUCCESS) { if (result != WebViewFactory.LIBLOAD_SUCCESS) { Log.w(LOGTAG, "failed to load with relro file, proceeding without"); Log.w(LOGTAG, "failed to load with relro file, proceeding without"); } else if (DEBUG) { } else if (DEBUG) { Loading Loading @@ -317,7 +315,6 @@ class WebViewLibraryLoader { static native boolean nativeReserveAddressSpace(long addressSpaceToReserve); static native boolean nativeReserveAddressSpace(long addressSpaceToReserve); static native boolean nativeCreateRelroFile(String lib32, String lib64, static native boolean nativeCreateRelroFile(String lib32, String lib64, String relro32, String relro64); String relro32, String relro64); static native int nativeLoadWithRelroFile(String lib32, String lib64, static native int nativeLoadWithRelroFile(String lib, String relro32, String relro64, String relro32, String relro64, ClassLoader clazzLoader); ClassLoader clazzLoader); } }
native/webview/loader/loader.cpp +5 −7 Original line number Original line Diff line number Diff line Loading @@ -167,16 +167,14 @@ jboolean CreateRelroFile(JNIEnv* env, jclass, jstring lib32, jstring lib64, return ret; return ret; } } jint LoadWithRelroFile(JNIEnv* env, jclass, jstring lib32, jstring lib64, jint LoadWithRelroFile(JNIEnv* env, jclass, jstring lib, jstring relro32, jstring relro32, jstring relro64, jobject clazzLoader) { jstring relro64, jobject clazzLoader) { #ifdef __LP64__ #ifdef __LP64__ jstring lib = lib64; jstring relro = relro64; jstring relro = relro64; (void)lib32; (void)relro32; (void)relro32; #else #else jstring lib = lib32; jstring relro = relro32; jstring relro = relro32; (void)lib64; (void)relro64; (void)relro64; #endif #endif jint ret = LIBLOAD_FAILED_JNI_CALL; jint ret = LIBLOAD_FAILED_JNI_CALL; const char* lib_utf8 = env->GetStringUTFChars(lib, NULL); const char* lib_utf8 = env->GetStringUTFChars(lib, NULL); Loading @@ -201,7 +199,7 @@ const JNINativeMethod kJniMethods[] = { "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z", reinterpret_cast<void*>(CreateRelroFile) }, reinterpret_cast<void*>(CreateRelroFile) }, { "nativeLoadWithRelroFile", { "nativeLoadWithRelroFile", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)I", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)I", reinterpret_cast<void*>(LoadWithRelroFile) }, reinterpret_cast<void*>(LoadWithRelroFile) }, }; }; Loading