diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/DeletePackageHelper.java | 6 | ||||
| -rw-r--r-- | services/tests/mockingservicestests/src/com/android/server/pm/DeletePackageHelperTest.kt | 11 |
2 files changed, 17 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java index 3b3d79e7dee1..07e0ddfac76b 100644 --- a/services/core/java/com/android/server/pm/DeletePackageHelper.java +++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java @@ -357,6 +357,12 @@ final class DeletePackageHelper { final DeletePackageAction action; synchronized (mPm.mLock) { final PackageSetting ps = mPm.mSettings.getPackageLPr(packageName); + if (ps == null) { + if (DEBUG_REMOVE) { + Slog.d(TAG, "Attempted to remove non-existent package " + packageName); + } + return false; + } final PackageSetting disabledPs = mPm.mSettings.getDisabledSystemPkgLPr(ps); if (PackageManagerServiceUtils.isSystemApp(ps) && mPm.checkPermission(CONTROL_KEYGUARD, packageName, UserHandle.USER_SYSTEM) diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/DeletePackageHelperTest.kt b/services/tests/mockingservicestests/src/com/android/server/pm/DeletePackageHelperTest.kt index 931b38dc2951..f8fe97e9af13 100644 --- a/services/tests/mockingservicestests/src/com/android/server/pm/DeletePackageHelperTest.kt +++ b/services/tests/mockingservicestests/src/com/android/server/pm/DeletePackageHelperTest.kt @@ -22,12 +22,14 @@ import android.content.pm.PackageManager.PERMISSION_DENIED import android.content.pm.PackageManager.PERMISSION_GRANTED import android.content.pm.UserInfo import android.os.Build +import android.os.UserHandle import android.os.UserHandle.USER_SYSTEM import android.util.Log import com.android.server.testutils.any import com.android.server.testutils.spy import com.android.server.testutils.whenever import com.google.common.truth.Truth.assertThat +import org.junit.Assert.assertFalse import org.junit.Before import org.junit.Rule import org.junit.Test @@ -177,4 +179,13 @@ class DeletePackageHelperTest { assertThat(result).isEqualTo(PackageManager.DELETE_FAILED_INTERNAL_ERROR) } + + @Test + fun deletePackageLIFWithNonExistantPackage_isFalse() { + val dph = DeletePackageHelper(mPms, mock(RemovePackageHelper::class.java), + mock(BroadcastHelper::class.java)) + val result = dph.deletePackageLIF("a.nonexistent.package", UserHandle.of(USER_SYSTEM), true, + intArrayOf(0), 0, PackageRemovedInfo(), true) + assertFalse(result) + } } |