summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pinyao Ting <pinyaoting@google.com> 2024-02-07 22:42:17 +0000
committer Pinyao Ting <pinyaoting@google.com> 2024-02-07 22:42:17 +0000
commit660fb7c386bd9b38ef973ed7e023fd16b237a0a0 (patch)
tree23a52917fcaaf2961203e37e7cb17df2ea45ecb2
parent8faa084028de4e346f4206a0324ee41b0f1401f1 (diff)
Resize WireBuffer before System.arraycopy
Fixes the case where src array is longer then buffer. Bug: 286130467 Test: atest RemoteViewsTest Change-Id: I4ed71d287ba534efb4373da6e6c758aa04a4045e
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java1
-rw-r--r--core/java/com/android/internal/widget/remotecompose/core/WireBuffer.java2
2 files changed, 2 insertions, 1 deletions
diff --git a/core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java b/core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java
index 3ab6c4744fb9..a7260bb7c14b 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/RemoteComposeBuffer.java
@@ -289,6 +289,7 @@ public class RemoteComposeBuffer {
try {
byte[] bytes = readAllBytes(fd);
buffer.reset();
+ buffer.mBuffer.resize(bytes.length);
System.arraycopy(bytes, 0, buffer.mBuffer.mBuffer, 0, bytes.length);
buffer.mBuffer.mSize = bytes.length;
} catch (Exception e) {
diff --git a/core/java/com/android/internal/widget/remotecompose/core/WireBuffer.java b/core/java/com/android/internal/widget/remotecompose/core/WireBuffer.java
index 3e701c17291b..4518d94498d6 100644
--- a/core/java/com/android/internal/widget/remotecompose/core/WireBuffer.java
+++ b/core/java/com/android/internal/widget/remotecompose/core/WireBuffer.java
@@ -37,7 +37,7 @@ public class WireBuffer {
this(BUFFER_SIZE);
}
- private void resize(int need) {
+ public void resize(int need) {
if (mSize + need >= mMaxSize) {
mMaxSize = Math.max(mMaxSize * 2, mSize + need);
mBuffer = Arrays.copyOf(mBuffer, mMaxSize);