You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2020/05/11 06:28:18 UTC

svn commit: r1877563 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java

Author: tilman
Date: Mon May 11 06:28:18 2020
New Revision: 1877563

URL: http://svn.apache.org/viewvc?rev=1877563&view=rev
Log:
PDFBOX-4828: avoid ArrayIndexOutOfBoundsException

Modified:
    pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java

Modified: pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java?rev=1877563&r1=1877562&r2=1877563&view=diff
==============================================================================
--- pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java (original)
+++ pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/GlyphSubstitutionTable.java Mon May 11 06:28:18 2020
@@ -543,17 +543,18 @@ public class GlyphSubstitutionTable exte
         langSysTables.forEach(langSysTable ->
         {
             int required = langSysTable.getRequiredFeatureIndex();
-            if (required != 0xffff) // if no required features = 0xFFFF
+            FeatureRecord[] featureRecords = featureListTable.getFeatureRecords();
+            if (required != 0xffff && required < featureRecords.length) // if no required features = 0xFFFF
             {
-                result.add(featureListTable.getFeatureRecords()[required]);
+                result.add(featureRecords[required]);
             }
             for (int featureIndex : langSysTable.getFeatureIndices())
             {
-                if (enabledFeatures == null
-                        || enabledFeatures.contains(
-                                featureListTable.getFeatureRecords()[featureIndex].getFeatureTag()))
+                if (featureIndex < featureRecords.length &&
+                        (enabledFeatures == null ||
+                         enabledFeatures.contains(featureRecords[featureIndex].getFeatureTag())))
                 {
-                    result.add(featureListTable.getFeatureRecords()[featureIndex]);
+                    result.add(featureRecords[featureIndex]);
                 }
             }
         });