diff options
| author | 2024-02-07 22:42:17 +0000 | |
|---|---|---|
| committer | 2024-02-07 22:42:17 +0000 | |
| commit | 660fb7c386bd9b38ef973ed7e023fd16b237a0a0 (patch) | |
| tree | 23a52917fcaaf2961203e37e7cb17df2ea45ecb2 | |
| parent | 8faa084028de4e346f4206a0324ee41b0f1401f1 (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.java | 1 | ||||
| -rw-r--r-- | core/java/com/android/internal/widget/remotecompose/core/WireBuffer.java | 2 |
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); |