Finish the GZIPOutputStream after copying the data into it

...while adding compressed entries to the dropbox.

Bug: 177907504
Test: atest CtsDropBoxManagerTestCases
Test: atest FrameworksServicesTests:com.android.server.DropBoxTest
Test: atest CtsAppExitTestCases:ActivityManagerAppExitInfoTest#testAnr
Change-Id: I56378593295bce646b4a4103bc6ade5e4d507f32
This commit is contained in:
Jing Ji
2021-01-19 12:43:44 -08:00
parent 805b216fa9
commit 2c083c8bda

View File

@@ -73,7 +73,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.SortedSet;
@@ -446,7 +445,10 @@ public final class DropBoxManagerService extends SystemService {
// from an in-memory buffer, or another file on disk; if we buffered
// we'd lose out on sendfile() optimizations
if (forceCompress) {
FileUtils.copy(in, new GZIPOutputStream(new FileOutputStream(fd)));
final GZIPOutputStream gzipOutputStream =
new GZIPOutputStream(new FileOutputStream(fd));
FileUtils.copy(in, gzipOutputStream);
gzipOutputStream.finish();
} else {
FileUtils.copy(in, new FileOutputStream(fd));
}