diff --git a/jadx-commons/jadx-zip/src/main/java/jadx/zip/parser/ZipDeflate.java b/jadx-commons/jadx-zip/src/main/java/jadx/zip/parser/ZipDeflate.java index 625d73e9b..8249bd778 100644 --- a/jadx-commons/jadx-zip/src/main/java/jadx/zip/parser/ZipDeflate.java +++ b/jadx-commons/jadx-zip/src/main/java/jadx/zip/parser/ZipDeflate.java @@ -15,6 +15,9 @@ final class ZipDeflate { buf.position(entry.getDataStart()); ByteBuffer entryBuf = buf.slice(); entryBuf.limit((int) entry.getCompressedSize()); + if (entry.getUncompressedSize() > Integer.MAX_VALUE) { + throw new DataFormatException("Entry too large: " + entry.getUncompressedSize()); + } byte[] out = new byte[(int) entry.getUncompressedSize()]; Inflater inflater = new Inflater(true); inflater.setInput(entryBuf);