summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTom Cherry <tomcherry@google.com>2021-08-04 11:20:49 -0700
committerTom Cherry <tomcherry@google.com>2021-08-04 11:32:30 -0700
commitf2473cc12ec657ade9afa177d4648ae46ff961fa (patch)
tree28268fc50084f98f2d0d57617ee3996c04c6597f /core/java
parent0520140984752f177cf73cc34b4b5a3f5051f695 (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')
-rw-r--r--core/java/android/os/DropBoxManager.java4
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() {