diff options
author | Janis Danisevskis <jdanis@google.com> | 2021-01-15 08:36:47 -0800 |
---|---|---|
committer | Janis Danisevskis <jdanis@google.com> | 2021-01-15 08:36:47 -0800 |
commit | adeebe5e382c4b0e1d6edbe70ebc0eed3f016cba (patch) | |
tree | d965aea3a198863ff6495648f3a29369b26cad11 | |
parent | a1daeb70050ae20350d2e30982a3e53e4e31cddb (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.java | 4 |
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); |