Author: tilman Date: Wed Jul 23 08:27:39 2025 New Revision: 1927419 Log: PDFBOX-6044: avoid potential OOM
Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java Modified: pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java ============================================================================== --- pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java Wed Jul 23 08:27:35 2025 (r1927418) +++ pdfbox/branches/2.0/fontbox/src/main/java/org/apache/fontbox/pfb/PfbParser.java Wed Jul 23 08:27:39 2025 (r1927419) @@ -145,7 +145,7 @@ public class PfbParser List<Integer> typeList = new ArrayList<Integer>(3); List<byte[]> barrList = new ArrayList<byte[]>(3); ByteArrayInputStream in = new ByteArrayInputStream(pfb); - int total = 0; + long total = 0; do { int r = in.read(); @@ -195,8 +195,13 @@ public class PfbParser // We now have ASCII and binary segments. Lets arrange these so that the ASCII segments // come first, then the binary segments, then the last ASCII segment if it is // 0000... cleartomark - - pfbdata = new byte[total]; + + if (total > pfb.length) + { + // PDFBOX-6044: avoid potential OOM + throw new IOException("total record size " + total + " would be larger than the input"); + } + pfbdata = new byte[(int) total]; byte[] cleartomarkSegment = null; int dstPos = 0;