Procházet zdrojové kódy

work with number of bytes returned by ReadableFile.read(), Coverity issues 72259 and 72261

Sebastian Stenzel před 9 roky
rodič
revize
6da3fde864

+ 3 - 3
main/filesystem-crypto/src/main/java/org/cryptomator/filesystem/crypto/CiphertextReader.java

@@ -47,10 +47,10 @@ class CiphertextReader implements Callable<Void> {
 			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);

+ 4 - 1
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);
 	}