diff options
| author | 2016-04-08 18:33:30 +0100 | |
|---|---|---|
| committer | 2016-04-09 09:59:46 +0100 | |
| commit | ff396f2710e60a4c596e30c7dc74ad7ef24a7ecc (patch) | |
| tree | 791bed45a0363e851995ebf3d83fd81e9929b3f6 | |
| parent | c3769ae3f344c8b69c14cbef789389699af15777 (diff) | |
Ensure we don't crash the system server when disabling/enabling package.
We shouldn't crash when trying to disable/enable a non-existent fallback
package.
Bug: 27918467
Change-Id: Ia94425ac197b17430900bb7a9e7b2d2bf65ab9b3
| -rw-r--r-- | services/core/java/com/android/server/webkit/SystemImpl.java | 9 | ||||
| -rw-r--r-- | services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/webkit/SystemImpl.java b/services/core/java/com/android/server/webkit/SystemImpl.java index 9486cfdb87a0..ed935ced0037 100644 --- a/services/core/java/com/android/server/webkit/SystemImpl.java +++ b/services/core/java/com/android/server/webkit/SystemImpl.java @@ -19,6 +19,7 @@ package com.android.server.webkit; import android.app.ActivityManagerNative; import android.app.AppGlobals; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.content.pm.IPackageDeleteObserver; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -187,7 +188,8 @@ public class SystemImpl implements SystemInterface { enablePackageForAllUsers(context, packageName, false); try { PackageManager pm = AppGlobals.getInitialApplication().getPackageManager(); - if (pm.getApplicationInfo(packageName, 0).isUpdatedSystemApp()) { + ApplicationInfo applicationInfo = pm.getApplicationInfo(packageName, 0); + if (applicationInfo != null && applicationInfo.isUpdatedSystemApp()) { pm.deletePackage(packageName, new IPackageDeleteObserver.Stub() { public void packageDeleted(String packageName, int returnCode) { enablePackageForAllUsers(context, packageName, false); @@ -214,8 +216,9 @@ public class SystemImpl implements SystemInterface { enable ? PackageManager.COMPONENT_ENABLED_STATE_DEFAULT : PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER, 0, userId, null); - } catch (RemoteException e) { - Log.w(TAG, "Tried to disable " + packageName + " for user " + userId + ": " + e); + } catch (RemoteException | IllegalArgumentException e) { + Log.w(TAG, "Tried to " + (enable ? "enable " : "disable ") + packageName + + " for user " + userId + ": " + e); } } diff --git a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java index 32b195b4c71b..cd976e753a0a 100644 --- a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java +++ b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl.java @@ -160,6 +160,8 @@ public class WebViewUpdateServiceImpl { isFallbackEnabled = isEnabledPackage( mSystemInterface.getPackageInfoForProvider(fallbackProvider)); } catch (NameNotFoundException e) { + // No fallback package installed -> early out. + return; } if (existsValidNonFallbackProvider |