Author: lehmi
Date: Sun Sep 28 10:25:04 2025
New Revision: 1928805

Log:
PDFBOX-6079: close input stream to avoid a resource leak

Modified:
   pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapperImpl.java
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
   
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java

Modified: 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java  
Sun Sep 28 08:30:20 2025        (r1928804)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/cmap/CMapParser.java  
Sun Sep 28 10:25:04 2025        (r1928805)
@@ -480,7 +480,7 @@ public class CMapParser
         {
             throw new IOException("Error: Could not find referenced cmap 
stream " + name);
         }
-        return new RandomAccessReadBuffer(is);
+        return RandomAccessReadBuffer.createBufferFromStream(is);
     }
 
     private Object parseNextToken(RandomAccessRead randomAcccessRead) throws 
IOException

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapperImpl.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapperImpl.java
        Sun Sep 28 08:30:20 2025        (r1928804)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/FontMapperImpl.java
        Sun Sep 28 10:25:04 2025        (r1928805)
@@ -122,8 +122,8 @@ final class FontMapperImpl implements Fo
             {
                 throw new IOException("resource '" + resourceName + "' not 
found");
             }
-            RandomAccessReadBuffer randomAccessReadBuffer = new 
RandomAccessReadBuffer(
-                    resourceAsStream);
+            RandomAccessReadBuffer randomAccessReadBuffer = 
RandomAccessReadBuffer
+                    .createBufferFromStream(resourceAsStream);
             TTFParser ttfParser = new TTFParser();
             lastResortFont = ttfParser.parse(randomAccessReadBuffer);
         }

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
        Sun Sep 28 08:30:20 2025        (r1928804)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
        Sun Sep 28 10:25:04 2025        (r1928805)
@@ -195,11 +195,13 @@ public class PDTrueTypeFont extends PDSi
     /**
      * Loads a TTF to be embedded into a document as a simple font.
      *
-     * <p><b>Note:</b> Simple fonts only support 256 characters. For Unicode 
support, use
-     * {@link PDType0Font#load(PDDocument, InputStream)} instead.</p>
+     * <p>
+     * <b>Note:</b> Simple fonts only support 256 characters. For Unicode 
support, use
+     * {@link PDType0Font#load(PDDocument, InputStream)} instead.
+     * </p>
      * 
      * @param doc The PDF document that will hold the embedded font.
-     * @param input A TTF file stream
+     * @param input A TTF file stream. It will be closed before returning.
      * @param encoding The PostScript encoding vector to be used for embedding.
      * @return a PDTrueTypeFont instance.
      * @throws IOException If there is an error loading the data.
@@ -207,7 +209,7 @@ public class PDTrueTypeFont extends PDSi
     public static PDTrueTypeFont load(PDDocument doc, InputStream input, 
Encoding encoding)
             throws IOException
     {
-        return load(doc, new RandomAccessReadBuffer(input), encoding);
+        return load(doc, RandomAccessReadBuffer.createBufferFromStream(input), 
encoding);
     }
 
     /**

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
   Sun Sep 28 08:30:20 2025        (r1928804)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
   Sun Sep 28 10:25:04 2025        (r1928805)
@@ -182,7 +182,7 @@ public class PDType0Font extends PDFont
     public static PDType0Font load(PDDocument doc, InputStream input, boolean 
embedSubset)
             throws IOException
     {
-        return load(doc, new RandomAccessReadBuffer(input), embedSubset, 
false);
+        return load(doc, RandomAccessReadBuffer.createBufferFromStream(input), 
embedSubset, false);
     }
 
     /**
@@ -236,20 +236,20 @@ public class PDType0Font extends PDFont
      * Loads a TTF to be embedded into a document as a vertical Type 0 font.
      *
      * @param doc The PDF document that will hold the embedded font.
-     * @param input A TrueType font.
+     * @param input A TrueType font. It will be closed before returning.
      * @return A Type0 font with a CIDFontType2 descendant.
      * @throws IOException If there is an error reading the font stream.
      */
     public static PDType0Font loadVertical(PDDocument doc, InputStream input) 
throws IOException
     {
-        return load(doc, new RandomAccessReadBuffer(input), true, true);
+        return load(doc, RandomAccessReadBuffer.createBufferFromStream(input), 
true, true);
     }
 
     /**
      * Loads a TTF to be embedded into a document as a vertical Type 0 font.
      *
      * @param doc The PDF document that will hold the embedded font.
-     * @param input A TrueType font.
+     * @param input A TrueType font. It will be closed before returning.
      * @param embedSubset True if the font will be subset before embedding
      * @return A Type0 font with a CIDFontType2 descendant.
      * @throws IOException If there is an error reading the font stream.
@@ -257,7 +257,7 @@ public class PDType0Font extends PDFont
     public static PDType0Font loadVertical(PDDocument doc, InputStream input, 
boolean embedSubset)
             throws IOException
     {
-        return load(doc, new RandomAccessReadBuffer(input), embedSubset, true);
+        return load(doc, RandomAccessReadBuffer.createBufferFromStream(input), 
embedSubset, true);
     }
 
     /**

Reply via email to