summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanis Danisevskis <jdanis@google.com>2021-01-15 08:36:47 -0800
committerJanis Danisevskis <jdanis@google.com>2021-01-15 08:36:47 -0800
commitadeebe5e382c4b0e1d6edbe70ebc0eed3f016cba (patch)
treed965aea3a198863ff6495648f3a29369b26cad11
parenta1daeb70050ae20350d2e30982a3e53e4e31cddb (diff)
Keystore 2.0 SPI: Fix bug in chunked streamer.
The chunked streamer sent the chunk buffer prematurely leading to oversized and garbage data sent to keystore. Test: atest android.keystore.cts.SignatureTest#testSmallMsgKat Change-Id: I84e40766b735f05b3fb7e0e692d26a25a0496649
-rw-r--r--keystore/java/android/security/keystore2/KeyStoreCryptoOperationChunkedStreamer.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/keystore/java/android/security/keystore2/KeyStoreCryptoOperationChunkedStreamer.java b/keystore/java/android/security/keystore2/KeyStoreCryptoOperationChunkedStreamer.java
index 6c733ba712d5..33e8dede9f5c 100644
--- a/keystore/java/android/security/keystore2/KeyStoreCryptoOperationChunkedStreamer.java
+++ b/keystore/java/android/security/keystore2/KeyStoreCryptoOperationChunkedStreamer.java
@@ -139,7 +139,9 @@ class KeyStoreCryptoOperationChunkedStreamer implements KeyStoreCryptoOperationS
int inputConsumed = ArrayUtils.copy(input, inputOffset, mChunk, mChunkLength,
inputLength);
inputLength -= inputConsumed;
- inputOffset += inputOffset;
+ inputOffset += inputConsumed;
+ mChunkLength += inputConsumed;
+ if (mChunkLength < mChunkSizeMax) return output;
byte[] o = mKeyStoreStream.update(mChunk);
if (o != null) {
output = ArrayUtils.concat(output, o);