From b9f34792fb7884b297777e1bf3858e8288906887 Mon Sep 17 00:00:00 2001 From: John DeRegnaucourt Date: Sat, 11 Jan 2025 16:08:42 -0500 Subject: [PATCH] too aggressive on gzip guaging --- .../java/com/cedarsoftware/util/ByteUtilities.java | 2 +- .../java/com/cedarsoftware/util/IOUtilitiesTest.java | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/cedarsoftware/util/ByteUtilities.java b/src/main/java/com/cedarsoftware/util/ByteUtilities.java index 7f9819b6..02bf48d5 100644 --- a/src/main/java/com/cedarsoftware/util/ByteUtilities.java +++ b/src/main/java/com/cedarsoftware/util/ByteUtilities.java @@ -152,7 +152,7 @@ private static char convertDigit(final int value) { * @return true if bytes are gzip compressed, false otherwise. */ public static boolean isGzipped(byte[] bytes) { - if (ArrayUtilities.size(bytes) < 18) { // minimum valid GZIP size + if (ArrayUtilities.size(bytes) < 2) { // minimum valid GZIP size return false; } return bytes[0] == (byte) 0x1f && bytes[1] == (byte) 0x8b; diff --git a/src/test/java/com/cedarsoftware/util/IOUtilitiesTest.java b/src/test/java/com/cedarsoftware/util/IOUtilitiesTest.java index 400de409..a879e821 100644 --- a/src/test/java/com/cedarsoftware/util/IOUtilitiesTest.java +++ b/src/test/java/com/cedarsoftware/util/IOUtilitiesTest.java @@ -21,6 +21,7 @@ import java.nio.file.Paths; import java.util.zip.DeflaterOutputStream; import java.util.zip.GZIPOutputStream; +import java.util.zip.ZipException; import org.junit.jupiter.api.Test; @@ -30,6 +31,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -193,12 +195,9 @@ public void testUncompressBytesThatDontNeedUncompressed() throws Exception @Test public void testUncompressBytesWithException() throws Exception { - // Since there is less than 18 bytes, it is not a valid gzip file, so it will return the same bytes passed in. - byte[] bytes = IOUtilities.uncompressBytes(new byte[] {(byte)0x1f, (byte)0x8b, (byte)0x01}); - assert bytes.length == 3; - assert bytes[0] == (byte) 0x1f; - assert bytes[1] == (byte) 0x8b; - assert bytes[2] == (byte) 0x01; + // Not a valid gzip byte stream, but starts with correct signature + Throwable t = assertThrows(RuntimeException.class, () -> IOUtilities.uncompressBytes(new byte[] {(byte)0x1f, (byte)0x8b, (byte)0x01})); + assert t.getCause() instanceof ZipException; } private ByteArrayOutputStream getUncompressedByteArray() throws IOException