From adcd346d01174b33a5b923d94efa70a2990e9cc7 Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Fri, 29 Jan 2021 11:01:26 +0100 Subject: [PATCH] Fix NNFE when starting PersistentDataBlock If the PersistentDataBlockService doesn't have a package configured to use the block (R.string.config_persistentDataPackageName == "") then we are currently getting this error: Started executing PersistentDataBlockService.onStart not able to find package android.content.pm.PackageManager$NameNotFoundException: at ApplicationPackageManager.getPackageUidAsUser at PersistentDataBlockService.getAllowedUid at PersistentDataBlockService.lambda$onStart On devices which do not use FRP, this field is blank so we should not log this message every time. Test: adb logcat -b all | grep PersistentDataBlockService.lambda Bug: 168244899 Change-Id: I738f20ad62e5e380181111179efea91cd915faf9 --- .../server/PersistentDataBlockService.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/PersistentDataBlockService.java b/services/core/java/com/android/server/PersistentDataBlockService.java index 00d8b0f1bed4d..d10cf4dd0505f 100644 --- a/services/core/java/com/android/server/PersistentDataBlockService.java +++ b/services/core/java/com/android/server/PersistentDataBlockService.java @@ -30,6 +30,7 @@ import android.os.UserHandle; import android.os.UserManager; import android.service.persistentdata.IPersistentDataBlockService; import android.service.persistentdata.PersistentDataBlockManager; +import android.text.TextUtils; import android.util.Slog; import com.android.internal.R; @@ -147,14 +148,15 @@ public class PersistentDataBlockService extends SystemService { private int getAllowedUid(int userHandle) { String allowedPackage = mContext.getResources() .getString(R.string.config_persistentDataPackageName); - PackageManager pm = mContext.getPackageManager(); int allowedUid = -1; - try { - allowedUid = pm.getPackageUidAsUser(allowedPackage, - PackageManager.MATCH_SYSTEM_ONLY, userHandle); - } catch (PackageManager.NameNotFoundException e) { - // not expected - Slog.e(TAG, "not able to find package " + allowedPackage, e); + if (!TextUtils.isEmpty(allowedPackage)) { + try { + allowedUid = mContext.getPackageManager().getPackageUidAsUser( + allowedPackage, PackageManager.MATCH_SYSTEM_ONLY, userHandle); + } catch (PackageManager.NameNotFoundException e) { + // not expected + Slog.e(TAG, "not able to find package " + allowedPackage, e); + } } return allowedUid; }