From 6da3fde864172af0875e6dd3df658a29cc7f9cd4 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Fri, 4 Mar 2016 01:39:50 +0100 Subject: [PATCH] work with number of bytes returned by ReadableFile.read(), Coverity issues 72259 and 72261 --- .../org/cryptomator/filesystem/crypto/CiphertextReader.java | 6 +++--- .../cryptomator/filesystem/crypto/CryptoReadableFile.java | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CiphertextReader.java b/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CiphertextReader.java index 675dd3bf4..0f31ac6b8 100644 --- a/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CiphertextReader.java +++ b/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CiphertextReader.java @@ -47,10 +47,10 @@ class CiphertextReader implements Callable { int bytesRead = -1; do { ByteBuffer ciphertext = ByteBuffer.allocate(READ_BUFFER_SIZE); - file.read(ciphertext); - ciphertext.flip(); - bytesRead = ciphertext.remaining(); + bytesRead = file.read(ciphertext); if (bytesRead > 0) { + ciphertext.flip(); + assert bytesRead == ciphertext.remaining(); decryptor.append(ciphertext); } } while (bytesRead > 0); diff --git a/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CryptoReadableFile.java b/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CryptoReadableFile.java index 4a4d13bbd..c915750f0 100644 --- a/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CryptoReadableFile.java +++ b/main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CryptoReadableFile.java @@ -43,7 +43,10 @@ class CryptoReadableFile implements ReadableFile { this.authenticate = authenticate; this.onAuthError = onAuthError; file.position(0); - file.read(header); + int headerBytesRead = file.read(header); + if (headerBytesRead != header.capacity()) { + throw new IllegalArgumentException("File too short to contain a header."); + } header.flip(); this.position(0); }