in src/main/java/org/apache/sling/feature/cpconverter/handlers/slinginitialcontent/SlingInitialContentBundleEntryMetaDataCollector.java [163:186]
private void safelyWriteOutputStream(long compressedSize,
byte[] data,
@NotNull InputStream input,
@NotNull OutputStream fos,
boolean shouldClose) throws IOException {
int count;
BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER);
while (total.get() + BUFFER <= TOOBIG && (count = input.read(data, 0, BUFFER)) != -1) {
dest.write(data, 0, count);
total.addAndGet(count);
double compressionRatio = (double) count / compressedSize;
if (compressionRatio > THRESHOLD_RATIO) {
// ratio between compressed and uncompressed data is highly suspicious, looks like a Zip Bomb Attack
break;
}
}
dest.flush();
if (shouldClose) {
dest.close();
}
}