From 7efaad1818b2daf1a380b501b8d556fa5e536386 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sun, 13 May 2018 17:54:35 +0200 Subject: [PATCH 1/2] Fix database creation issue --- .../java/com/kunzisoft/keepass/database/Database.java | 10 +++++++--- .../kunzisoft/keepass/database/save/PwDbV4Output.java | 3 +++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/database/Database.java b/app/src/main/java/com/kunzisoft/keepass/database/Database.java index fc86035c6..d8592bf79 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/Database.java +++ b/app/src/main/java/com/kunzisoft/keepass/database/Database.java @@ -215,6 +215,8 @@ public class Database { } private void saveData(Context ctx, Uri uri) throws IOException, PwDbOutputException { + String errorMessage = "Failed to store database."; + if (uri.getScheme().equals("file")) { String filename = uri.getPath(); File tempFile = new File(filename + ".tmp"); @@ -226,7 +228,8 @@ public class Database { if (pmo != null) pmo.output(); } catch (Exception e) { - throw new IOException("Failed to store database."); + Log.e(TAG, errorMessage, e); + throw new IOException(errorMessage, e); } finally { if (fos != null) fos.close(); @@ -242,7 +245,7 @@ public class Database { File orig = new File(filename); if (!tempFile.renameTo(orig)) { - throw new IOException("Failed to store database."); + throw new IOException(errorMessage); } } else { @@ -253,7 +256,8 @@ public class Database { if (pmo != null) pmo.output(); } catch (Exception e) { - throw new IOException("Failed to store database."); + Log.e(TAG, errorMessage, e); + throw new IOException(errorMessage, e); } finally { if (os != null) os.close(); diff --git a/app/src/main/java/com/kunzisoft/keepass/database/save/PwDbV4Output.java b/app/src/main/java/com/kunzisoft/keepass/database/save/PwDbV4Output.java index 11cd55f3b..f9625d317 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/save/PwDbV4Output.java +++ b/app/src/main/java/com/kunzisoft/keepass/database/save/PwDbV4Output.java @@ -293,6 +293,9 @@ public class PwDbV4Output extends PwDbOutput { } random.nextBytes(header.encryptionIV); + if (mPM.getKdfParameters() == null) { + mPM.setKdfParameters(KdfFactory.aesKdf.getDefaultParameters()); + } KdfEngine kdf = KdfFactory.get(mPM.getKdfParameters()); kdf.randomize(mPM.getKdfParameters()); From 07600949ab3d3398399cde9d046f8625fcba0bd6 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sun, 13 May 2018 18:14:25 +0200 Subject: [PATCH 2/2] Upgrade version and fix potential null pointer for kdf --- CHANGELOG | 3 +++ app/build.gradle | 4 ++-- .../java/com/kunzisoft/keepass/database/Database.java | 8 ++++++-- .../keepass/database/save/PwDbHeaderOutputV4.java | 1 - fastlane/metadata/android/en-US/changelogs/11.txt | 6 ++++++ fastlane/metadata/android/fr-FR/changelogs/11.txt | 6 ++++++ 6 files changed, 23 insertions(+), 5 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/11.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/11.txt diff --git a/CHANGELOG b/CHANGELOG index 4b63bae22..ef3590299 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +KeepassDX (2.5.0.0beta11) + * Fix crash in beta10 version + KeepassDX (2.5.0.0beta10) * Dynamically change Algorithm and Key Derivation Function in settings * Upgrade translations diff --git a/app/build.gradle b/app/build.gradle index 0b3d42846..6ef7f64ed 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "com.kunzisoft.keepass" minSdkVersion 14 targetSdkVersion 27 - versionCode = 10 - versionName = "2.5.0.0beta10" + versionCode = 11 + versionName = "2.5.0.0beta11" multiDexEnabled true testApplicationId = "com.kunzisoft.keepass.tests" diff --git a/app/src/main/java/com/kunzisoft/keepass/database/Database.java b/app/src/main/java/com/kunzisoft/keepass/database/Database.java index d8592bf79..15cb0b711 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/Database.java +++ b/app/src/main/java/com/kunzisoft/keepass/database/Database.java @@ -396,14 +396,18 @@ public class Database { } public KdfEngine getKdfEngine() { - return getPwDatabase().getKdfEngine(); + KdfEngine kdfEngine = getPwDatabase().getKdfEngine(); + if (kdfEngine == null) + return KdfFactory.aesKdf; + return kdfEngine; } public void assignKdfEngine(KdfEngine kdfEngine) { switch (getPwDatabase().getVersion()) { case V4: PwDatabaseV4 db = ((PwDatabaseV4) getPwDatabase()); - if (!db.getKdfParameters().kdfUUID.equals(kdfEngine.getDefaultParameters().kdfUUID)) + if (db.getKdfParameters() == null + || !db.getKdfParameters().kdfUUID.equals(kdfEngine.getDefaultParameters().kdfUUID)) db.setKdfParameters(kdfEngine.getDefaultParameters()); setNumberKeyEncryptionRounds(kdfEngine.getDefaultKeyRounds()); setMemoryUsage(kdfEngine.getDefaultMemoryUsage()); diff --git a/app/src/main/java/com/kunzisoft/keepass/database/save/PwDbHeaderOutputV4.java b/app/src/main/java/com/kunzisoft/keepass/database/save/PwDbHeaderOutputV4.java index cfa054e30..689eff18e 100644 --- a/app/src/main/java/com/kunzisoft/keepass/database/save/PwDbHeaderOutputV4.java +++ b/app/src/main/java/com/kunzisoft/keepass/database/save/PwDbHeaderOutputV4.java @@ -100,7 +100,6 @@ public class PwDbHeaderOutputV4 extends PwDbHeaderOutput { writeHeaderField(PwDbHeaderV4.PwDbHeaderV4Fields.TransformRounds, LEDataOutputStream.writeLongBuf(db.getNumberKeyEncryptionRounds())); } else { writeHeaderField(PwDbHeaderV4.PwDbHeaderV4Fields.KdfParameters, KdfParameters.serialize(db.getKdfParameters())); - // TODO verify serialize in all cases } if (header.encryptionIV.length > 0) { diff --git a/fastlane/metadata/android/en-US/changelogs/11.txt b/fastlane/metadata/android/en-US/changelogs/11.txt new file mode 100644 index 000000000..5b66c9a53 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/11.txt @@ -0,0 +1,6 @@ + * Dynamically change Algorithm and Key Derivation Function in settings + * Upgrade translations + * New red volcano theme, fix classic dark theme + * Add Material Icon Pack to the Free version + * Update fingerprint state with checkbox + * Fix bugs / crash in beta10 version \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/11.txt b/fastlane/metadata/android/fr-FR/changelogs/11.txt new file mode 100644 index 000000000..66c2a2ddc --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/11.txt @@ -0,0 +1,6 @@ + * Modification dynamique de l'algorithme et de la fonction de dérivation de clé dans les paramètres + * Mise à jour des traductions + * Nouveau thème red volcano, correction du thème sombre classic + * Ajout du Pack d'Icones Material à la version gratuite + * Mise à jour de l'état de l'empreinte digitale avec la boite à cocher + * Corrections de bugs / crash dans la version beta10 \ No newline at end of file