From 7efaad1818b2daf1a380b501b8d556fa5e536386 Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Sun, 13 May 2018 17:54:35 +0200 Subject: [PATCH] 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());