We try to avoid throwing NullPointerException, but it was possible to trigger one here with a specially crafted input-file Should fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=62626 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1912792 13f79535-47bb-0310-9956-ffa450edef68tags/REL_5_2_5
@@ -68,6 +68,7 @@ public abstract class BaseTestPPTIterating { | |||
EXCLUDED.put("clusterfuzz-testcase-minimized-POIHSLFFuzzer-5962760801091584.ppt", RuntimeException.class); | |||
EXCLUDED.put("clusterfuzz-testcase-minimized-POIHSLFFuzzer-5231088823566336.ppt", FileNotFoundException.class); | |||
EXCLUDED.put("clusterfuzz-testcase-minimized-POIFuzzer-6411649193738240.ppt", FileNotFoundException.class); | |||
EXCLUDED.put("clusterfuzz-testcase-minimized-POIHSLFFuzzer-4838893004128256.ppt", FileNotFoundException.class); | |||
} | |||
public static Stream<Arguments> files() { |
@@ -67,7 +67,8 @@ public class TestPPTXMLDump extends BaseTestPPTIterating { | |||
if (pFile.getName().equals("clusterfuzz-testcase-minimized-POIFuzzer-5429732352851968.ppt") || | |||
pFile.getName().equals("clusterfuzz-testcase-minimized-POIFuzzer-5681320547975168.ppt") || | |||
pFile.getName().equals("clusterfuzz-testcase-minimized-POIHSLFFuzzer-5231088823566336.ppt") || | |||
pFile.getName().equals("clusterfuzz-testcase-minimized-POIFuzzer-6411649193738240.ppt")) { | |||
pFile.getName().equals("clusterfuzz-testcase-minimized-POIFuzzer-6411649193738240.ppt") || | |||
pFile.getName().equals("clusterfuzz-testcase-minimized-POIHSLFFuzzer-4838893004128256.ppt")) { | |||
throw new FileNotFoundException(); | |||
} | |||
} |
@@ -79,10 +79,14 @@ public class AgileEncryptionHeader extends EncryptionHeader { | |||
keyData.getHashAlgorithm() + " @ " + hashSize + " bytes"); | |||
} | |||
if (keyData.getSaltSize() == null) { | |||
throw new EncryptedDocumentException("Invalid salt length: " + keyData.getSaltSize()); | |||
} | |||
int saltLength = keyData.getSaltSize(); | |||
setKeySalt(keyData.getSaltValue()); | |||
if (getKeySalt().length != saltLength) { | |||
throw new EncryptedDocumentException("Invalid salt length"); | |||
throw new EncryptedDocumentException("Invalid salt length: " + getKeySalt().length + " and " + saltLength); | |||
} | |||
DataIntegrity di = ed.getDataIntegrity(); |