From 8e4b2e74480fbcb513b6823bc9ca791c3d876cf9 Mon Sep 17 00:00:00 2001 From: Oleksandr Melnykov Date: Wed, 10 Jul 2019 02:31:17 -0700 Subject: [PATCH] Use try-with-resource to prevent output stream to be leaked in BlobProvider Summary: This diff fixes a potential memory leak which can occur if an exception is thrown inside the try block and `outputStream.close()` is not called. By wrapping `outputStream.write(data)` inside try-with-resource we guarantee that outputStream will be closed regardless of whether the try statement completes normally or abruptly. Reviewed By: sammy-SC Differential Revision: D16148850 fbshipit-source-id: c5c0a78b36375857f6e717bb581e8686a4a94bb9 --- .../java/com/facebook/react/modules/blob/BlobProvider.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java b/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java index 748930b6378..d2c5c72b53f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/blob/BlobProvider.java @@ -85,10 +85,8 @@ public final class BlobProvider extends ContentProvider { ParcelFileDescriptor readSide = pipe[0]; ParcelFileDescriptor writeSide = pipe[1]; - OutputStream outputStream = new ParcelFileDescriptor.AutoCloseOutputStream(writeSide); - try { + try (OutputStream outputStream = new ParcelFileDescriptor.AutoCloseOutputStream(writeSide)) { outputStream.write(data); - outputStream.close(); } catch (IOException exception) { return null; }