From 52724216782c9aa77bfe981418c5f3bb0a2c99bd Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 18 Apr 2018 12:41:16 +0200 Subject: [PATCH] create avatar path before saving avatar --- .../persistance/FileBackend.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java index 9c85fd033..89068fab4 100644 --- a/src/main/java/eu/siacs/conversations/persistance/FileBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/FileBackend.java @@ -665,10 +665,14 @@ public class FileBackend { avatar.size = file.length(); } else { file = new File(mXmppConnectionService.getCacheDir().getAbsolutePath() + "/" + UUID.randomUUID().toString()); - file.getParentFile().mkdirs(); + if (file.getParentFile().mkdirs()) { + Log.d(Config.LOGTAG,"created cache directory"); + } OutputStream os = null; try { - file.createNewFile(); + if (!file.createNewFile()) { + Log.d(Config.LOGTAG,"unable to create temporary file "+file.getAbsolutePath()); + } os = new FileOutputStream(file); MessageDigest digest = MessageDigest.getInstance("SHA-1"); digest.reset(); @@ -679,11 +683,20 @@ public class FileBackend { mDigestOutputStream.close(); String sha1sum = CryptoHelper.bytesToHex(digest.digest()); if (sha1sum.equals(avatar.sha1sum)) { + File outputFile = new File(getAvatarPath(avatar.getFilename())); + if (outputFile.getParentFile().mkdirs()) { + Log.d(Config.LOGTAG,"created avatar directory"); + } String filename = getAvatarPath(avatar.getFilename()); - file.renameTo(new File(filename)); + if (!file.renameTo(new File(filename))) { + Log.d(Config.LOGTAG,"unable to rename "+file.getAbsolutePath()+" to "+outputFile); + return false; + } } else { Log.d(Config.LOGTAG, "sha1sum mismatch for " + avatar.owner); - file.delete(); + if (!file.delete()) { + Log.d(Config.LOGTAG,"unable to delete temporary file"); + } return false; } avatar.size = bytes.length;