From 660fb7c386bd9b38ef973ed7e023fd16b237a0a0 Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Wed, 7 Feb 2024 22:42:17 +0000 Subject: Resize WireBuffer before System.arraycopy Fixes the case where src array is longer then buffer. Bug: 286130467 Test: atest RemoteViewsTest Change-Id: I4ed71d287ba534efb4373da6e6c758aa04a4045e --- .../android/internal/widget/remotecompose/core/RemoteComposeBuffer.java | 1 + .../java/com/android/internal/widget/remotecompose/core/WireBuffer.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) 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); -- cgit v1.2.3-59-g8ed1b