diff options
| author | Tom Cherry <tomcherry@google.com> | 2021-08-04 11:20:49 -0700 |
|---|---|---|
| committer | Tom Cherry <tomcherry@google.com> | 2021-08-04 11:32:30 -0700 |
| commit | f2473cc12ec657ade9afa177d4648ae46ff961fa (patch) | |
| tree | 28268fc50084f98f2d0d57617ee3996c04c6597f /core/java/android | |
| parent | 0520140984752f177cf73cc34b4b5a3f5051f695 (diff) | |
DropBoxManager: use BufferedInputStream when using GZIPInputStream
GZIPInputStream has a bug (b/195554062) where it uses unbuffered IO
when reading the gzip header. This triggers the UnbufferedIoViolation
strict mode violation for apps that target API level 28+.
Independently of fixing GZIPInputStream, DropBoxManager can use
BufferedInputStream to take a proactive step against this and future
bugs.
Bug: 195554712
Test: Successfully read gzip dropbox entries from API level 28+ app.
Change-Id: Id539efcb366b3e3d53513a098975b25866ed16ff
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/os/DropBoxManager.java | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/core/java/android/os/DropBoxManager.java b/core/java/android/os/DropBoxManager.java index fd576c94b194..d70167677ee7 100644 --- a/core/java/android/os/DropBoxManager.java +++ b/core/java/android/os/DropBoxManager.java @@ -30,6 +30,7 @@ import android.util.Log; import com.android.internal.os.IDropBoxManagerService; +import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.Closeable; import java.io.File; @@ -234,7 +235,8 @@ public class DropBoxManager { } else { return null; } - return (mFlags & IS_GZIPPED) != 0 ? new GZIPInputStream(is) : is; + return (mFlags & IS_GZIPPED) != 0 + ? new GZIPInputStream(new BufferedInputStream(is)) : is; } public static final @android.annotation.NonNull Parcelable.Creator<Entry> CREATOR = new Parcelable.Creator() { |
