Bug 66425: Avoid exceptions found via poi-fuzz

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
This commit is contained in:
Dominik Stadler 2024-01-30 21:01:46 +00:00
parent fef87cfa0a
commit 147c96da67
3 changed files with 15 additions and 3 deletions

View 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();

View 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();

View 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);