Fix file descriptor leak in UNIXProcess#ProcessInputStream.
This was trigerred by a recent change to file des reference counting.
bug: 26515843
Change-Id: Iad512623454e5035eacffbd7cfd10ae4f1e5b5cc
diff --git a/ojluni/src/main/java/java/io/FileInputStream.java b/ojluni/src/main/java/java/io/FileInputStream.java
index a6d9a9f..25bc312 100755
--- a/ojluni/src/main/java/java/io/FileInputStream.java
+++ b/ojluni/src/main/java/java/io/FileInputStream.java
@@ -166,21 +166,18 @@
* I/O on the stream, an <code>IOException</code> is thrown.
*
* @param fdObj the file descriptor to be opened for reading.
- * @throws SecurityException if a security manager exists and its
- * <code>checkRead</code> method denies read access to the
- * file descriptor.
- * @see SecurityManager#checkRead(java.io.FileDescriptor)
*/
public FileInputStream(FileDescriptor fdObj) {
- SecurityManager security = System.getSecurityManager();
+ this(fdObj, false /* isFdOwner */);
+ }
+
+ /** @hide */
+ public FileInputStream(FileDescriptor fdObj, boolean isFdOwner) {
if (fdObj == null) {
- throw new NullPointerException();
- }
- if (security != null) {
- security.checkRead(fdObj);
+ throw new NullPointerException("fdObj == null");
}
fd = fdObj;
- isFdOwner = false;
+ this.isFdOwner = isFdOwner;
path = null;
}
diff --git a/ojluni/src/main/java/java/lang/UNIXProcess.java b/ojluni/src/main/java/java/lang/UNIXProcess.java
index 59e2b00..40fd8bb 100644
--- a/ojluni/src/main/java/java/lang/UNIXProcess.java
+++ b/ojluni/src/main/java/java/lang/UNIXProcess.java
@@ -267,7 +267,7 @@
*/
static class ProcessPipeInputStream extends BufferedInputStream {
ProcessPipeInputStream(int fd) {
- super(new FileInputStream(newFileDescriptor(fd)));
+ super(new FileInputStream(newFileDescriptor(fd), true /* isFdOwner */));
}
private static byte[] drainInputStream(InputStream in)