From 1b7613329e6258a85d548998f5dd36e58046a5b4 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 7 Aug 2023 20:35:59 +0000 Subject: [PATCH] Bug 66425: Add memory-safeguard in one more place We try to generally avoid overly large allocations in places where arrays are allocated. We add one more such check for pictures in HSLF. We might need to increase the used value of 10MB if users report larger files being used frequently. Overriding this check via IOUtils is possible. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1911525 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hslf/usermodel/HSLFSlideShowImpl.java | 3 ++- .../apache/poi/hslf/dev/TestPPTXMLDump.java | 22 ++++++++++++++---- .../poi/hslf/dev/TestSlideIdListing.java | 15 +++++++++++- ...nimized-POIHSLFFuzzer-5306877435838464.ppt | Bin 0 -> 116224 bytes test-data/spreadsheet/stress.xls | Bin 61440 -> 61952 bytes 5 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 test-data/slideshow/clusterfuzz-testcase-minimized-POIHSLFFuzzer-5306877435838464.ppt diff --git a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java index 70fb287026..170f42bfcb 100644 --- a/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java +++ b/poi-scratchpad/src/main/java/org/apache/poi/hslf/usermodel/HSLFSlideShowImpl.java @@ -94,6 +94,7 @@ public final class HSLFSlideShowImpl extends POIDocument implements Closeable { private static final int DEFAULT_MAX_RECORD_LENGTH = 200_000_000; private static final int MAX_DOCUMENT_SIZE = 100_000_000; private static int MAX_RECORD_LENGTH = DEFAULT_MAX_RECORD_LENGTH; + private static final int MAX_IMAGE_LENGTH = 10_000_000; // Holds metadata on where things are in our document private CurrentUserAtom currentUser; @@ -407,7 +408,7 @@ public final class HSLFSlideShowImpl extends POIDocument implements Closeable { EscherContainerRecord blipStore = getBlipStore(); byte[] pictstream; try (DocumentInputStream is = getDirectory().createDocumentInputStream(entry)) { - pictstream = IOUtils.toByteArray(is, entry.getSize()); + pictstream = IOUtils.toByteArray(is, entry.getSize(), MAX_IMAGE_LENGTH); } List factories = new ArrayList<>(); diff --git a/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestPPTXMLDump.java b/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestPPTXMLDump.java index c0572750b6..7b85af8ad9 100644 --- a/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestPPTXMLDump.java +++ b/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestPPTXMLDump.java @@ -16,17 +16,23 @@ ==================================================================== */ package org.apache.poi.hslf.dev; -import static org.junit.jupiter.api.Assertions.assertThrows; +import org.apache.poi.EmptyFileException; +import org.apache.poi.hslf.HSLFTestDataSamples; +import org.junit.jupiter.api.Test; import java.io.File; import java.util.Collections; +import java.util.HashSet; import java.util.Set; -import org.apache.poi.EmptyFileException; -import org.apache.poi.hslf.HSLFTestDataSamples; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertThrows; public class TestPPTXMLDump extends BaseTestPPTIterating { + static final Set LOCAL_EXCLUDED = new HashSet<>(); + static { + LOCAL_EXCLUDED.add("clusterfuzz-testcase-minimized-POIHSLFFuzzer-5306877435838464.ppt"); + } + @Test void testMain() throws Exception { PPTXMLDump.main(new String[0]); @@ -41,7 +47,13 @@ public class TestPPTXMLDump extends BaseTestPPTIterating { @Override void runOneFile(File pFile) throws Exception { - PPTXMLDump.main(new String[]{pFile.getAbsolutePath()}); + try { + PPTXMLDump.main(new String[]{pFile.getAbsolutePath()}); + } catch (IndexOutOfBoundsException e) { + if (!LOCAL_EXCLUDED.contains(pFile.getName())) { + throw e; + } + } } @Override diff --git a/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestSlideIdListing.java b/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestSlideIdListing.java index b75bec5178..f3afc851fb 100644 --- a/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestSlideIdListing.java +++ b/poi-scratchpad/src/test/java/org/apache/poi/hslf/dev/TestSlideIdListing.java @@ -20,12 +20,19 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import java.io.File; import java.io.IOException; +import java.util.HashSet; +import java.util.Set; import org.apache.poi.EmptyFileException; import org.apache.poi.hslf.HSLFTestDataSamples; import org.junit.jupiter.api.Test; public class TestSlideIdListing extends BaseTestPPTIterating { + static final Set LOCAL_EXCLUDED = new HashSet<>(); + static { + LOCAL_EXCLUDED.add("clusterfuzz-testcase-minimized-POIHSLFFuzzer-5306877435838464.ppt"); + } + @Test void testMain() throws IOException { // calls System.exit(): SlideIdListing.main(new String[0]); @@ -37,6 +44,12 @@ public class TestSlideIdListing extends BaseTestPPTIterating { @Override void runOneFile(File pFile) throws Exception { - SlideIdListing.main(new String[]{pFile.getAbsolutePath()}); + try { + SlideIdListing.main(new String[]{pFile.getAbsolutePath()}); + } catch (IllegalArgumentException e) { + if (!LOCAL_EXCLUDED.contains(pFile.getName())) { + throw e; + } + } } } \ No newline at end of file diff --git a/test-data/slideshow/clusterfuzz-testcase-minimized-POIHSLFFuzzer-5306877435838464.ppt b/test-data/slideshow/clusterfuzz-testcase-minimized-POIHSLFFuzzer-5306877435838464.ppt new file mode 100644 index 0000000000000000000000000000000000000000..26c74a2ccee95bb158f6ca31c0598070d45f73a2 GIT binary patch literal 116224 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 LHE0i==A!?9lS801 literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index a873b632cb72e537a614246635bd3f62aa38e8ef..70847a482cd28fd42546e61516cf7bfa49290244 100644 GIT binary patch delta 762 zcmZvYO=uHA9L3-4CTUW&sik5qC@ZuFCEApHEd`~77;>->sMa)|((KyAZZ3LWLRe3jSs{BATFbNVJ`nUGnf#tto7Br7*y{VFLZEaw^Vt^ULEn6-a+a7TLbny||0a^SAx z!cgC(0_~y`2Tmr%Trr)M3+K>{(27#!C#=_4U{e3dZ|BHIecPm`S1C&)6`#lL=K}$+ z$H#kkuiv{jmn-%GK`EP@;f9C3ex7%`IXPS8j%8Kn&$FcAtj1M2M~#lhh35JgW=6ULJ-o%ObN-AO2~pFHZVo>XeLfe=kAodu;fFQ=`Gv$<%Ea@*Ui-A3MrW;pi zxdVfQZWtv_7@qncPt$j=WIHOq=vx_;AP&(=OA)H<)N3h*s(n-u#zvDYRW08_{}$RQ zE5`7$owAuJz^%u E0KfIN(*OVf delta 274 zcmV+t0qy>Pc55)B`M$U<8r`Yz3ff1?6ayaRi3~ zSm3kz1jhpibphpQ$=Lw|lR?M;#&mV#S Y)&KyO-T(mJ-?Mtph8~kJ1P!9@1n`AgF#rGn -- 2.39.5