diff options
author | Vincent Breitmoser <valodim@mugenguild.com> | 2014-05-08 15:56:32 +0200 |
---|---|---|
committer | Vincent Breitmoser <valodim@mugenguild.com> | 2014-05-08 15:57:38 +0200 |
commit | cbc3988628d09ed8a4fe967e1f21786f46cb038b (patch) | |
tree | fc297d384d6b9bbd33ea27b8252428dde2763623 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java | |
parent | 79117b1ef8074434579191e1dd734f9445d6544f (diff) | |
download | open-keychain-cbc3988628d09ed8a4fe967e1f21786f46cb038b.tar.gz open-keychain-cbc3988628d09ed8a4fe967e1f21786f46cb038b.tar.bz2 open-keychain-cbc3988628d09ed8a4fe967e1f21786f46cb038b.zip |
proper null checks and closing of cursors everywhere
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java')
-rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java | 65 |
1 files changed, 36 insertions, 29 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java index 061f91176..68726d3e0 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java @@ -255,53 +255,60 @@ public class KeychainDatabase extends SQLiteOpenHelper { } }.getReadableDatabase(); - Cursor c = null; + Cursor cursor = null; try { // we insert in two steps: first, all public keys that have secret keys - c = db.rawQuery("SELECT key_ring_data FROM key_rings WHERE type = 1 OR EXISTS (" + cursor = db.rawQuery("SELECT key_ring_data FROM key_rings WHERE type = 1 OR EXISTS (" + " SELECT 1 FROM key_rings d2 WHERE key_rings.master_key_id = d2.master_key_id" + " AND d2.type = 1) ORDER BY type ASC", null); - Log.d(Constants.TAG, "Importing " + c.getCount() + " secret keyrings from apg.db..."); - for (int i = 0; i < c.getCount(); i++) { - c.moveToPosition(i); - byte[] data = c.getBlob(0); - PGPKeyRing ring = PgpConversionHelper.BytesToPGPKeyRing(data); - ProviderHelper providerHelper = new ProviderHelper(context); - if (ring instanceof PGPPublicKeyRing) - providerHelper.saveKeyRing((PGPPublicKeyRing) ring); - else if (ring instanceof PGPSecretKeyRing) - providerHelper.saveKeyRing((PGPSecretKeyRing) ring); - else { - Log.e(Constants.TAG, "Unknown blob data type!"); + Log.d(Constants.TAG, "Importing " + cursor.getCount() + " secret keyrings from apg.db..."); + if (cursor != null) { + for (int i = 0; i < cursor.getCount(); i++) { + cursor.moveToPosition(i); + byte[] data = cursor.getBlob(0); + PGPKeyRing ring = PgpConversionHelper.BytesToPGPKeyRing(data); + ProviderHelper providerHelper = new ProviderHelper(context); + if (ring instanceof PGPPublicKeyRing) + providerHelper.saveKeyRing((PGPPublicKeyRing) ring); + else if (ring instanceof PGPSecretKeyRing) + providerHelper.saveKeyRing((PGPSecretKeyRing) ring); + else { + Log.e(Constants.TAG, "Unknown blob data type!"); + } } } + if (cursor != null) { + cursor.close(); + } // afterwards, insert all keys, starting with public keys that have secret keys, then // secret keys, then all others. this order is necessary to ensure all certifications // are recognized properly. - c = db.rawQuery("SELECT key_ring_data FROM key_rings ORDER BY (type = 0 AND EXISTS (" + cursor = db.rawQuery("SELECT key_ring_data FROM key_rings ORDER BY (type = 0 AND EXISTS (" + " SELECT 1 FROM key_rings d2 WHERE key_rings.master_key_id = d2.master_key_id AND" + " d2.type = 1)) DESC, type DESC", null); // import from old database - Log.d(Constants.TAG, "Importing " + c.getCount() + " keyrings from apg.db..."); - for (int i = 0; i < c.getCount(); i++) { - c.moveToPosition(i); - byte[] data = c.getBlob(0); - PGPKeyRing ring = PgpConversionHelper.BytesToPGPKeyRing(data); - ProviderHelper providerHelper = new ProviderHelper(context); - if (ring instanceof PGPPublicKeyRing) { - providerHelper.saveKeyRing((PGPPublicKeyRing) ring); - } else if (ring instanceof PGPSecretKeyRing) { - providerHelper.saveKeyRing((PGPSecretKeyRing) ring); - } else { - Log.e(Constants.TAG, "Unknown blob data type!"); + Log.d(Constants.TAG, "Importing " + cursor.getCount() + " keyrings from apg.db..."); + if (cursor != null) { + for (int i = 0; i < cursor.getCount(); i++) { + cursor.moveToPosition(i); + byte[] data = cursor.getBlob(0); + PGPKeyRing ring = PgpConversionHelper.BytesToPGPKeyRing(data); + ProviderHelper providerHelper = new ProviderHelper(context); + if (ring instanceof PGPPublicKeyRing) { + providerHelper.saveKeyRing((PGPPublicKeyRing) ring); + } else if (ring instanceof PGPSecretKeyRing) { + providerHelper.saveKeyRing((PGPSecretKeyRing) ring); + } else { + Log.e(Constants.TAG, "Unknown blob data type!"); + } } } } catch (IOException e) { Log.e(Constants.TAG, "Error importing apg.db!", e); } finally { - if (c != null) { - c.close(); + if (cursor != null) { + cursor.close(); } if (db != null) { db.close(); |