Merge branch 'fix-npe-verifying-perms' into 'master'
Fix npe verifying perms Fixed a NPE for apps with no permissions. Here is an example of the logging output for a couple of apps too after my change: ``` D/ApkVerifier(10929): Checking permissions D/ApkVerifier(10929): Actual: D/ApkVerifier(10929): None D/ApkVerifier(10929): Expected: D/ApkVerifier(10929): None ``` and ``` D/ApkVerifier(10929): Checking permissions D/ApkVerifier(10929): Actual: D/ApkVerifier(10929): android.permission.READ_EXTERNAL_STORAGE D/ApkVerifier(10929): android.permission.WRITE_EXTERNAL_STORAGE D/ApkVerifier(10929): android.permission.SET_WALLPAPER D/ApkVerifier(10929): android.permission.SET_WALLPAPER_HINTS D/ApkVerifier(10929): android.permission.WRITE_SETTINGS D/ApkVerifier(10929): Expected: D/ApkVerifier(10929): android.permission.SET_WALLPAPER D/ApkVerifier(10929): android.permission.READ_EXTERNAL_STORAGE D/ApkVerifier(10929): android.permission.SET_WALLPAPER_HINTS D/ApkVerifier(10929): android.permission.WRITE_SETTINGS D/ApkVerifier(10929): android.permission.WRITE_EXTERNAL_STORAGE ``` See merge request !407
This commit is contained in:
commit
5d2c2bc6e6
@ -99,6 +99,15 @@ public class ApkVerifierTest {
|
||||
assertTrue(extendedPermsXml.exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNulls() {
|
||||
assertTrue(ApkVerifier.requestedPermissionsEqual(null, null));
|
||||
|
||||
String[] perms = new String[] {"Blah"};
|
||||
assertFalse(ApkVerifier.requestedPermissionsEqual(perms, null));
|
||||
assertFalse(ApkVerifier.requestedPermissionsEqual(null, perms));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testWithoutPrefix() {
|
||||
Apk apk = new Apk();
|
||||
|
@ -23,6 +23,7 @@ import android.content.Context;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
@ -80,8 +81,6 @@ class ApkVerifier {
|
||||
}
|
||||
|
||||
// verify permissions, important for unattended installer
|
||||
Utils.debugLog(TAG, "localPermissions: " + TextUtils.join("\n", localApkInfo.requestedPermissions));
|
||||
Utils.debugLog(TAG, "expectedPermissions: " + TextUtils.join("\n", expectedApk.requestedPermissions));
|
||||
if (!requestedPermissionsEqual(expectedApk.requestedPermissions, localApkInfo.requestedPermissions)) {
|
||||
throw new ApkPermissionUnequalException("Permissions in APK and index.xml do not match!");
|
||||
}
|
||||
@ -103,7 +102,11 @@ class ApkVerifier {
|
||||
* data format is {@link String} arrays but they are in effect sets. This is the
|
||||
* same data format as {@link android.content.pm.PackageInfo#requestedPermissions}
|
||||
*/
|
||||
public static boolean requestedPermissionsEqual(String[] expected, String[] actual) {
|
||||
public static boolean requestedPermissionsEqual(@Nullable String[] expected, @Nullable String[] actual) {
|
||||
Utils.debugLog(TAG, "Checking permissions");
|
||||
Utils.debugLog(TAG, "Actual:\n " + (actual == null ? "None" : TextUtils.join("\n ", actual)));
|
||||
Utils.debugLog(TAG, "Expected:\n " + (expected == null ? "None" : TextUtils.join("\n ", expected)));
|
||||
|
||||
if (expected == null && actual == null) {
|
||||
return true;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user