Bug 66425: Avoid a NullPointerException found via oss-fuzz

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-ffa450edef68
This commit is contained in:
Dominik Stadler 2023-10-07 22:12:18 +00:00
parent a42842841e
commit c331c5d26a
5 changed files with 8 additions and 2 deletions

View File

@ -68,6 +68,7 @@ public abstract class BaseTestPPTIterating {
EXCLUDED.put("clusterfuzz-testcase-minimized-POIHSLFFuzzer-5962760801091584.ppt", RuntimeException.class); 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-POIHSLFFuzzer-5231088823566336.ppt", FileNotFoundException.class);
EXCLUDED.put("clusterfuzz-testcase-minimized-POIFuzzer-6411649193738240.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() { public static Stream<Arguments> files() {

View File

@ -67,7 +67,8 @@ public class TestPPTXMLDump extends BaseTestPPTIterating {
if (pFile.getName().equals("clusterfuzz-testcase-minimized-POIFuzzer-5429732352851968.ppt") || 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-POIFuzzer-5681320547975168.ppt") ||
pFile.getName().equals("clusterfuzz-testcase-minimized-POIHSLFFuzzer-5231088823566336.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(); throw new FileNotFoundException();
} }
} }

View File

@ -79,10 +79,14 @@ public class AgileEncryptionHeader extends EncryptionHeader {
keyData.getHashAlgorithm() + " @ " + hashSize + " bytes"); keyData.getHashAlgorithm() + " @ " + hashSize + " bytes");
} }
if (keyData.getSaltSize() == null) {
throw new EncryptedDocumentException("Invalid salt length: " + keyData.getSaltSize());
}
int saltLength = keyData.getSaltSize(); int saltLength = keyData.getSaltSize();
setKeySalt(keyData.getSaltValue()); setKeySalt(keyData.getSaltValue());
if (getKeySalt().length != saltLength) { if (getKeySalt().length != saltLength) {
throw new EncryptedDocumentException("Invalid salt length"); throw new EncryptedDocumentException("Invalid salt length: " + getKeySalt().length + " and " + saltLength);
} }
DataIntegrity di = ed.getDataIntegrity(); DataIntegrity di = ed.getDataIntegrity();

Binary file not shown.