From ad3b61623ff5ad43be826bc0b05ef09b20984673 Mon Sep 17 00:00:00 2001 From: Tomasz Mikolajewski Date: Mon, 30 May 2016 10:17:08 +0900 Subject: [PATCH] Make CotentResolver#openInputStream handle errors from reliable pipes. Bug: 28967963 Change-Id: I3b1343e91e7b6616ea0d641888f5b41d1b83a8a5 --- .../java/android/os/ParcelFileDescriptor.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/core/java/android/os/ParcelFileDescriptor.java b/core/java/android/os/ParcelFileDescriptor.java index d5491d3a808a0..7702c174ba2f0 100644 --- a/core/java/android/os/ParcelFileDescriptor.java +++ b/core/java/android/os/ParcelFileDescriptor.java @@ -864,6 +864,34 @@ public class ParcelFileDescriptor implements Parcelable, Closeable { super.close(); } } + + @Override + public int read() throws IOException { + final int result = super.read(); + if (result == -1 && mPfd.canDetectErrors()) { + // Check for errors only on EOF, to minimize overhead. + mPfd.checkError(); + } + return result; + } + + @Override + public int read(byte[] b) throws IOException { + final int result = super.read(b); + if (result == -1 && mPfd.canDetectErrors()) { + mPfd.checkError(); + } + return result; + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + final int result = super.read(b, off, len); + if (result == -1 && mPfd.canDetectErrors()) { + mPfd.checkError(); + } + return result; + } } /**