]> source.dussan.org Git - poi.git/commitdiff
Bug 66425: Avoid exceptions found via poi-fuzz
authorDominik Stadler <centic@apache.org>
Tue, 30 Jan 2024 21:01:46 +0000 (21:01 +0000)
committerDominik Stadler <centic@apache.org>
Tue, 30 Jan 2024 21:01:46 +0000 (21:01 +0000)
Prevent a few NullPointerException

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65450 and
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63907 and
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63727

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1915480 13f79535-47bb-0310-9956-ffa450edef68

poi-ooxml/src/main/java/org/apache/poi/xslf/usermodel/XSLFGraphicFrame.java
poi-scratchpad/src/main/java/org/apache/poi/hwpf/HWPFDocumentCore.java
poi/src/main/java/org/apache/poi/poifs/crypt/agile/AgileEncryptionVerifier.java

index 0738aba408941e15cc640028fa71b71302d6f3c0..746afd001ecb08e698869e8a67b0e51b1f3ebdd4 100644 (file)
@@ -79,6 +79,9 @@ public class XSLFGraphicFrame extends XSLFShape implements GraphicalFrame<XSLFSh
         }
 
         CTPoint2D off = xfrm.getOff();
+        if (off == null) {
+            throw new IllegalArgumentException("Could not retrieve Off from the XML object");
+        }
         double x = Units.toPoints(POIXMLUnits.parseLength(off.xgetX()));
         double y = Units.toPoints(POIXMLUnits.parseLength(off.xgetY()));
         CTPositiveSize2D ext = xfrm.getExt();
index 86f9956824e2829ef943070635c397a9c07132f5..bf73030fe295ae5e6ba07628aaca6919ffa21651 100644 (file)
@@ -88,7 +88,7 @@ public abstract class HWPFDocumentCore extends POIDocument {
      * Size of the not encrypted part of the FIB
      */
     protected static final int FIB_BASE_LEN = 68;
-    
+
     /**
      * [MS-DOC] 2.2.6.2/3 Office Binary Document ... Encryption:
      * "... The block number MUST be set to zero at the beginning of the stream and
@@ -283,6 +283,9 @@ public abstract class HWPFDocumentCore extends POIDocument {
         EncryptionMode em = fibBase.isFObfuscated() ? EncryptionMode.xor : null;
         EncryptionInfo ei = new EncryptionInfo(leis, em);
         Decryptor dec = ei.getDecryptor();
+        if (dec == null) {
+            throw new EncryptedDocumentException("Invalid encryption info, did not get a matching decryptor");
+        }
         dec.setChunkSize(RC4_REKEYING_INTERVAL);
         try {
             String pass = Biff8EncryptionKey.getCurrentUserPassword();
index e65e679b351fd2165a99abbb538343c1afda53bf..add680a7281d147213d5223f287cd683edb47b9f 100644 (file)
@@ -51,10 +51,16 @@ public class AgileEncryptionVerifier extends EncryptionVerifier {
         setCipherAlgorithm(keyData.getCipherAlgorithm());
         setKeySize(keyData.getKeyBits());
 
-        int blockSize = keyData.getBlockSize();
+        Integer blockSize = keyData.getBlockSize();
+        if (blockSize == null) {
+            throw new IllegalArgumentException("blockSize not set");
+        }
         setBlockSize(blockSize);
 
-        int hashSize = keyData.getHashSize();
+        Integer hashSize = keyData.getHashSize();
+        if (hashSize == null) {
+            throw new IllegalArgumentException("hashSize not set");
+        }
 
         HashAlgorithm ha = keyData.getHashAlgorithm();
         setHashAlgorithm(ha);