From 29675b294126bd00bb51bc8616f476aa90abacf1 Mon Sep 17 00:00:00 2001 From: "Torne (Richard Coles)" Date: Wed, 4 Oct 2017 11:29:58 -0400 Subject: [PATCH] Fix NPE in WebView relro creator process. There's no context available in the relro creator process, resulting in a NPE and crash when it tries to see if WebView is supported. Skip the check in this case, because we know it's supported if we ran the relro creation process at all. Change-Id: I95e9aad7407b8f73dddf8a8b685d41d2f500736a Fixes: 67398770 Test: boot, make sure no crash dialog from "android" --- core/java/android/webkit/WebViewFactory.java | 9 +++++++-- core/java/android/webkit/WebViewLibraryLoader.java | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java index 36b24ffb89543..4773cda39b1d3 100644 --- a/core/java/android/webkit/WebViewFactory.java +++ b/core/java/android/webkit/WebViewFactory.java @@ -492,10 +492,15 @@ public final class WebViewFactory { /** @hide */ public static IWebViewUpdateService getUpdateService() { if (isWebViewSupported()) { - return IWebViewUpdateService.Stub.asInterface( - ServiceManager.getService(WEBVIEW_UPDATE_SERVICE_NAME)); + return getUpdateServiceUnchecked(); } else { return null; } } + + /** @hide */ + static IWebViewUpdateService getUpdateServiceUnchecked() { + return IWebViewUpdateService.Stub.asInterface( + ServiceManager.getService(WEBVIEW_UPDATE_SERVICE_NAME)); + } } diff --git a/core/java/android/webkit/WebViewLibraryLoader.java b/core/java/android/webkit/WebViewLibraryLoader.java index 6f9e8ece4b13a..21316e7db9e45 100644 --- a/core/java/android/webkit/WebViewLibraryLoader.java +++ b/core/java/android/webkit/WebViewLibraryLoader.java @@ -80,7 +80,7 @@ class WebViewLibraryLoader { } finally { // We must do our best to always notify the update service, even if something fails. try { - WebViewFactory.getUpdateService().notifyRelroCreationCompleted(); + WebViewFactory.getUpdateServiceUnchecked().notifyRelroCreationCompleted(); } catch (RemoteException e) { Log.e(LOGTAG, "error notifying update service", e); }