Null safe package name in AppOps writeState

Ensure that, if a package has a null package name, that the AppOpsServer
does not crash. Existing package tags should be closed, and lastPkg set
to null.

Test: manual
Fixes: 193664388
Change-Id: I420477a9f102b6c1f8305b45158e7bdb3a71e227
This commit is contained in:
Nate Myren
2021-07-15 10:35:49 -07:00
parent e684a19bbb
commit 0b925d4f46

View File

@@ -5099,13 +5099,15 @@ public class AppOpsService extends IAppOpsService.Stub {
String lastPkg = null;
for (int i=0; i<allOps.size(); i++) {
AppOpsManager.PackageOps pkg = allOps.get(i);
if (!pkg.getPackageName().equals(lastPkg)) {
if (!Objects.equals(pkg.getPackageName(), lastPkg)) {
if (lastPkg != null) {
out.endTag(null, "pkg");
}
lastPkg = pkg.getPackageName();
out.startTag(null, "pkg");
out.attribute(null, "n", lastPkg);
if (lastPkg != null) {
out.startTag(null, "pkg");
out.attribute(null, "n", lastPkg);
}
}
out.startTag(null, "uid");
out.attributeInt(null, "n", pkg.getUid());