]> source.dussan.org Git - poi.git/commitdiff
[bug-66827] treat VML drawing entry for a comment that has incorrect type of TEXT...
authorPJ Fanning <fanningpj@apache.org>
Wed, 2 Aug 2023 08:58:34 +0000 (08:58 +0000)
committerPJ Fanning <fanningpj@apache.org>
Wed, 2 Aug 2023 08:58:34 +0000 (08:58 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1911407 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java

index 9f7fe0801c388a80b948af4fe73d6eabc9189660..5d1932c908ab7ac7968edf713fc9e40eed7d0a2c 100644 (file)
@@ -55,6 +55,7 @@ import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlObject;
 import org.apache.xmlbeans.XmlOptions;
+import org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException;
 import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STTrueFalse;
 
 /**
@@ -301,7 +302,12 @@ public final class XSSFVMLDrawing extends POIXMLDocumentPart {
         }
 
         CTClientData cldata = sh.getClientDataArray(0);
-        if(cldata.getObjectType() != STObjectType.NOTE) {
+        try {
+            if (cldata.getObjectType() != STObjectType.NOTE) {
+                return false;
+            }
+        } catch (XmlValueOutOfRangeException e) {
+            // see https://bz.apache.org/bugzilla/show_bug.cgi?id=66827
             return false;
         }
 
index 3c55db989dd42bbc0dffa8ccbbcf2828a146ed95..700196e53c118978866296f030158c9459f07a95 100644 (file)
@@ -3891,7 +3891,17 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
             for (int i = 0; i < expectedCount; i++) {
                 assertNotNull(sst.getItemAt(i));
             }
-
+            XSSFSheet ws = wb.getSheetAt(0);
+            int nRowCount = ws.getLastRowNum(); // does not include header row in the count
+            for (int r = 1; r <= nRowCount; r++) {
+                XSSFRow row = ws.getRow(r);
+                if (row != null) {
+                    XSSFCell cellSymbol = row.getCell(0);
+                    if (cellSymbol != null) {
+                        XSSFComment comment = cellSymbol.getCellComment();
+                    }
+                }
+            }
         }
     }