diff options
| author | Daniel Ramos <hiperzone@gmail.com> | 2015-03-15 00:12:26 +0000 | 
|---|---|---|
| committer | Daniel Ramos <hiperzone@gmail.com> | 2015-03-15 00:12:26 +0000 | 
| commit | d3dd9020f585b8f587d9f2deb377750dbd260db1 (patch) | |
| tree | 29a54fcbf343be765be52f2ffa6bde0f9601da57 /OpenKeychain/src/main/java/org | |
| parent | f1b1ecae20edb40a0c9b48009075daf94af51d20 (diff) | |
| download | open-keychain-d3dd9020f585b8f587d9f2deb377750dbd260db1.tar.gz open-keychain-d3dd9020f585b8f587d9f2deb377750dbd260db1.tar.bz2 open-keychain-d3dd9020f585b8f587d9f2deb377750dbd260db1.zip | |
-fixed out of bounds crash when retrieving the main profile name with secret keys
-fixed a possible crash when retrieving the main profile contactid
Diffstat (limited to 'OpenKeychain/src/main/java/org')
| -rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java | 4 | ||||
| -rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java | 22 | 
2 files changed, 15 insertions, 11 deletions
| diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java index 18f1ef8a7..c3a8d60f8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java @@ -135,7 +135,9 @@ public class ViewKeyFragment extends LoaderFragment implements          if (mIsSecret) {//all secret keys are linked to "me" profile in contacts              contactId = ContactHelper.getMainProfileContactId(resolver);              List<String> mainProfileNames = ContactHelper.getMainProfileContactName(context); -            if (mainProfileNames != null) contactName = mainProfileNames.get(0); +            if (mainProfileNames != null && mainProfileNames.size() > 0) { +                contactName = mainProfileNames.get(0); +            }          } else {              contactId = ContactHelper.findContactId(resolver, masterKeyId); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java index c07d7a36b..3fa6ea666 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java @@ -222,18 +222,20 @@ public class ContactHelper {       * @return       */      public static long getMainProfileContactId(ContentResolver resolver) { -        Cursor profileCursor = resolver.query( -                ContactsContract.Profile.CONTENT_URI, -                new String[]{ -                        ContactsContract.Profile._ID -                }, -                null, null, null); -        if (profileCursor == null) { +        Cursor profileCursor = resolver.query(ContactsContract.Profile.CONTENT_URI, +                new String[]{ ContactsContract.Profile._ID}, null, null, null); + +        if(profileCursor != null && profileCursor.getCount() != 0 && profileCursor.moveToNext()) { +            long contactId = profileCursor.getLong(0); +            profileCursor.close(); +            return contactId; +        } +        else { +            if(profileCursor != null) { +                profileCursor.close(); +            }              return -1;          } - -        profileCursor.moveToNext(); -        return profileCursor.getLong(0);      }      /** | 
