From a780bd9965eb4adbcf14e5162c5b6f9a2a92ea97 Mon Sep 17 00:00:00 2001 From: Jay Wang Date: Wed, 20 Jul 2016 18:22:27 -0700 Subject: SnapdragonCamera: Fix NPE caused by empty permission result When request permission is cancelled, it returns empty result. Making change to check the length of result before accessing the result. Change-Id: Ic3e35c822e053fac7786d5e924ead8935feb1794 CRs-Fixed: 1041464 --- src/com/android/camera/PermissionsActivity.java | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/com/android/camera/PermissionsActivity.java b/src/com/android/camera/PermissionsActivity.java index 27a3c3692..f47d8265c 100644 --- a/src/com/android/camera/PermissionsActivity.java +++ b/src/com/android/camera/PermissionsActivity.java @@ -119,24 +119,27 @@ public class PermissionsActivity extends Activity { String permissions[], int[] grantResults) { if (mShouldRequestCameraPermission) { - if (grantResults[mIndexPermissionRequestCamera] == - PackageManager.PERMISSION_GRANTED) { + if ((grantResults.length >= mIndexPermissionRequestCamera + 1) && + (grantResults[mIndexPermissionRequestCamera] == + PackageManager.PERMISSION_GRANTED)) { mFlagHasCameraPermission = true; } else { mCriticalPermissionDenied = true; } } if (mShouldRequestMicrophonePermission) { - if (grantResults[mIndexPermissionRequestMicrophone] == - PackageManager.PERMISSION_GRANTED) { + if ((grantResults.length >= mIndexPermissionRequestMicrophone + 1) && + (grantResults[mIndexPermissionRequestMicrophone] == + PackageManager.PERMISSION_GRANTED)) { mFlagHasMicrophonePermission = true; } else { mCriticalPermissionDenied = true; } } if (mShouldRequestStoragePermission) { - if (grantResults[mIndexPermissionRequestStorage] == - PackageManager.PERMISSION_GRANTED) { + if ((grantResults.length >= mIndexPermissionRequestStorage + 1) && + (grantResults[mIndexPermissionRequestStorage] == + PackageManager.PERMISSION_GRANTED)) { mFlagHasStoragePermission = true; } else { mCriticalPermissionDenied = true; @@ -144,8 +147,9 @@ public class PermissionsActivity extends Activity { } if (mShouldRequestLocationPermission) { - if (grantResults[mIndexPermissionRequestLocation] == - PackageManager.PERMISSION_GRANTED) { + if ((grantResults.length >= mIndexPermissionRequestLocation + 1) && + (grantResults[mIndexPermissionRequestLocation] == + PackageManager.PERMISSION_GRANTED)) { // Do nothing } else { // Do nothing -- cgit v1.2.3