OSDN Git Service

Check for zero length array returns
authorAlan Newberger <alann@google.com>
Fri, 31 Jul 2015 19:37:15 +0000 (12:37 -0700)
committerAlan Newberger <alann@google.com>
Fri, 31 Jul 2015 19:37:15 +0000 (12:37 -0700)
permissions API may return zero length arrays, check before
access.

Bug: 22871531
Change-Id: I0ebd5feecb24f03fda0350a9ab42efa25127b3dc

src/com/android/camera/PermissionsActivity.java

index a3981ef..3fda04a 100644 (file)
@@ -179,21 +179,24 @@ public class PermissionsActivity extends QuickActivity {
                 true);
 
         if (mShouldRequestCameraPermission) {
-            if (grantResults[mIndexPermissionRequestCamera] == PackageManager.PERMISSION_GRANTED) {
+            if (grantResults.length > 0 && grantResults[mIndexPermissionRequestCamera] ==
+                    PackageManager.PERMISSION_GRANTED) {
                 mFlagHasCameraPermission = true;
             } else {
                 handlePermissionsFailure();
             }
         }
         if (mShouldRequestMicrophonePermission) {
-            if (grantResults[mIndexPermissionRequestMicrophone] == PackageManager.PERMISSION_GRANTED) {
+            if (grantResults.length > 0 && grantResults[mIndexPermissionRequestMicrophone] ==
+                    PackageManager.PERMISSION_GRANTED) {
                 mFlagHasMicrophonePermission = true;
             } else {
                 handlePermissionsFailure();
             }
         }
         if (mShouldRequestStoragePermission) {
-            if (grantResults[mIndexPermissionRequestStorage] == PackageManager.PERMISSION_GRANTED) {
+            if (grantResults.length > 0 && grantResults[mIndexPermissionRequestStorage] ==
+                    PackageManager.PERMISSION_GRANTED) {
                 mFlagHasStoragePermission = true;
             } else {
                 handlePermissionsFailure();
@@ -201,7 +204,8 @@ public class PermissionsActivity extends QuickActivity {
         }
 
         if (mShouldRequestLocationPermission) {
-            if (grantResults[mIndexPermissionRequestLocation] == PackageManager.PERMISSION_GRANTED) {
+            if (grantResults.length > 0 && grantResults[mIndexPermissionRequestLocation] ==
+                    PackageManager.PERMISSION_GRANTED) {
                 // Do nothing
             } else {
                 // Do nothing