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 2019/08/09 04:01:08 UTC
svn commit: r1864747 -
/pdfbox/branches/issue4569/fontbox/src/main/java/org/apache/fontbox/ttf/CmapSubtable.java
Author: tilman
Date: Fri Aug 9 04:01:08 2019
New Revision: 1864747
URL: http://svn.apache.org/viewvc?rev=1864747&view=rev
Log:
PDFBOX-4626: avoid ArrayIndexOutOfBoundsException
Modified:
pdfbox/branches/issue4569/fontbox/src/main/java/org/apache/fontbox/ttf/CmapSubtable.java
Modified: pdfbox/branches/issue4569/fontbox/src/main/java/org/apache/fontbox/ttf/CmapSubtable.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/issue4569/fontbox/src/main/java/org/apache/fontbox/ttf/CmapSubtable.java?rev=1864747&r1=1864746&r2=1864747&view=diff
==============================================================================
--- pdfbox/branches/issue4569/fontbox/src/main/java/org/apache/fontbox/ttf/CmapSubtable.java (original)
+++ pdfbox/branches/issue4569/fontbox/src/main/java/org/apache/fontbox/ttf/CmapSubtable.java Fri Aug 9 04:01:08 2019
@@ -142,6 +142,11 @@ public class CmapSubtable implements Cma
glyphIdToCharacterCode = newGlyphIdToCharacterCode(numGlyphs);
characterCodeToGlyphId = new HashMap<>(numGlyphs);
+ if (numGlyphs == 0)
+ {
+ LOG.warn("subtable has no glyphs");
+ return;
+ }
// -- Read all sub header
for (long i = 0; i < nbGroups; ++i)
{
@@ -231,6 +236,11 @@ public class CmapSubtable implements Cma
long nbGroups = data.readUnsignedInt();
glyphIdToCharacterCode = newGlyphIdToCharacterCode(numGlyphs);
characterCodeToGlyphId = new HashMap<>(numGlyphs);
+ if (numGlyphs == 0)
+ {
+ LOG.warn("subtable has no glyphs");
+ return;
+ }
for (long i = 0; i < nbGroups; ++i)
{
long firstCode = data.readUnsignedInt();
@@ -282,6 +292,11 @@ public class CmapSubtable implements Cma
long nbGroups = data.readUnsignedInt();
glyphIdToCharacterCode = newGlyphIdToCharacterCode(numGlyphs);
characterCodeToGlyphId = new HashMap<>(numGlyphs);
+ if (numGlyphs == 0)
+ {
+ LOG.warn("subtable has no glyphs");
+ return;
+ }
for (long i = 0; i < nbGroups; ++i)
{
long firstCode = data.readUnsignedInt();
@@ -491,6 +506,11 @@ public class CmapSubtable implements Cma
long startGlyphIndexOffset = data.getCurrentPosition();
glyphIdToCharacterCode = newGlyphIdToCharacterCode(numGlyphs);
characterCodeToGlyphId = new HashMap<>(numGlyphs);
+ if (numGlyphs == 0)
+ {
+ LOG.warn("subtable has no glyphs");
+ return;
+ }
for (int i = 0; i <= maxSubHeaderIndex; ++i)
{
SubHeader sh = subHeaders[i];