From d559feb7deff492fd196bfbaf05888db1305cc45 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Thu, 11 Jun 2020 00:43:45 +0000 Subject: [PATCH] 64512 - Ole10Native aka embedded / object packager - handle UTF16 variants git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1878730 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hpsf/examples/CopyCompare.java | 12 +- .../poifs/eventfilesystem/POIFSReader.java | 10 +- .../eventfilesystem/POIFSReaderEvent.java | 47 +-- .../poi/poifs/filesystem/EntryUtils.java | 26 +- .../poi/poifs/filesystem/Ole10Native.java | 360 +++++++++++------- .../filesystem/Ole10NativeException.java | 8 + .../LittleEndianByteArrayInputStream.java | 16 +- .../poi/xssf/usermodel/XSSFDrawing.java | 7 +- .../poi/xssf/usermodel/XSSFRelation.java | 4 +- .../poi/xssf/usermodel/XSSFWorkbook.java | 19 +- .../poi/ss/usermodel/TestEmbedOLEPackage.java | 103 ++++- .../poi/poifs/filesystem/TestOle10Native.java | 31 +- test-data/spreadsheet/bug64512_embed.xlsx | Bin 0 -> 49746 bytes 13 files changed, 411 insertions(+), 232 deletions(-) create mode 100755 test-data/spreadsheet/bug64512_embed.xlsx diff --git a/src/examples/src/org/apache/poi/hpsf/examples/CopyCompare.java b/src/examples/src/org/apache/poi/hpsf/examples/CopyCompare.java index 0ac755d2d4..174a71c79a 100644 --- a/src/examples/src/org/apache/poi/hpsf/examples/CopyCompare.java +++ b/src/examples/src/org/apache/poi/hpsf/examples/CopyCompare.java @@ -163,10 +163,20 @@ public final class CopyCompare { // Ensures that the directory hierarchy for a document in a POI fileystem is in place. // Get the root directory. It does not have to be created since it always exists in a POIFS. DirectoryEntry de = poiFs.getRoot(); + if ("/".equals(path.toString())) { + de.setStorageClsid(event.getStorageClassId()); + } for (int i=0; i + *
  • they must have entries with the same names
  • + *
  • no entries in one but not the other
  • + *
  • the size+contents of each entry must match
  • + *
  • the storage classid of the directories must match
  • + * * To exclude certain parts of the Directory from being checked, * use a {@link FilteringDirectoryNode} */ public static boolean areDirectoriesIdentical(DirectoryEntry dirA, DirectoryEntry dirB) { return new DirectoryDelegate(dirA).equals(new DirectoryDelegate(dirB)); } - + /** * Compares two {@link DocumentEntry} instances of a POI file system. * Documents that are not property set streams must be bitwise identical. @@ -185,6 +189,10 @@ public final class EntryUtils { return false; } + if (!dir.getStorageClsid().equals(dd.dir.getStorageClsid())) { + return false; + } + return entries().equals(dd.entries()); } } diff --git a/src/java/org/apache/poi/poifs/filesystem/Ole10Native.java b/src/java/org/apache/poi/poifs/filesystem/Ole10Native.java index 7fc7731f7a..c2d4a73ae4 100644 --- a/src/java/org/apache/poi/poifs/filesystem/Ole10Native.java +++ b/src/java/org/apache/poi/poifs/filesystem/Ole10Native.java @@ -21,44 +21,69 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import org.apache.poi.util.IOUtils; -import org.apache.poi.util.LittleEndian; +import org.apache.poi.util.LittleEndianByteArrayInputStream; import org.apache.poi.util.LittleEndianConsts; +import org.apache.poi.util.LittleEndianInput; import org.apache.poi.util.LittleEndianOutputStream; import org.apache.poi.util.StringUtil; /** * Represents an Ole10Native record which is wrapped around certain binary - * files being embedded in OLE2 documents. + * files being embedded in OLE2 documents.

    + * + * Ole10Native objects come in different shapes: + *

    */ +@SuppressWarnings("unused") public class Ole10Native { public static final String OLE10_NATIVE = "\u0001Ole10Native"; - protected static final String ISO1 = "ISO-8859-1"; - //arbitrarily selected; may need to increase + private static final Charset ISO1 = StandardCharsets.ISO_8859_1; + // arbitrarily selected; may need to increase private static final int MAX_RECORD_LENGTH = 100_000_000; + // arbitrarily selected; may need to increase + private static final int MAX_STRING_LENGTH = 1024; /** * Default content of the \u0001Ole entry */ private static final byte[] OLE_MARKER_BYTES = - { 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + {1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; private static final String OLE_MARKER_NAME = "\u0001Ole"; - - // (the fields as they appear in the raw record:) - private int totalSize; // 4 bytes, total size of record not including this field - private short flags1 = 2; // 2 bytes, unknown, mostly [02 00] - private String label; // ASCIIZ, stored in this field without the terminating zero - private String fileName; // ASCIIZ, stored in this field without the terminating zero - private short flags2; // 2 bytes, unknown, mostly [00 00] - private short unknown1 = 3; // see below - private String command; // ASCIIZ, stored in this field without the terminating zero - private byte[] dataBuffer; // varying size, the actual native data - private short flags3; // some final flags? or zero terminators?, sometimes not there + // 4 bytes, total size of record not including this field + private int totalSize; + // 2 bytes, unknown, mostly [02 00] + private short flags1 = 2; + // ASCIIZ, stored in this field without the terminating zero + private String label; + // ASCIIZ, stored in this field without the terminating zero + private String fileName; + // 2 bytes, unknown, mostly [00 00] + private short flags2; + // see below + private short unknown1 = 3; + // ASCIIZ, stored in this field without the terminating zero + private String command; + // varying size, the actual native data + private byte[] dataBuffer; + // UTF16-LE String with leading length + private String command2; + // UTF16-LE String with leading length + private String label2; + // UTF16-LE String with leading length + private String fileName2; /** * the field encoding mode - merely a try-and-error guess ... @@ -81,7 +106,6 @@ public class Ole10Native { private EncodingMode mode; - /** * Creates an instance of this class from an embedded OLE Object. The OLE Object is expected * to include a stream "{01}Ole10Native" which contains the actual @@ -89,11 +113,11 @@ public class Ole10Native { * * @param poifs POI Filesystem object * @return Returns an instance of this class - * @throws IOException on IO error + * @throws IOException on IO error * @throws Ole10NativeException on invalid or unexcepted data format */ public static Ole10Native createFromEmbeddedOleObject(POIFSFileSystem poifs) throws IOException, Ole10NativeException { - return createFromEmbeddedOleObject(poifs.getRoot()); + return createFromEmbeddedOleObject(poifs.getRoot()); } /** @@ -103,26 +127,27 @@ public class Ole10Native { * * @param directory POI Filesystem object * @return Returns an instance of this class - * @throws IOException on IO error + * @throws IOException on IO error * @throws Ole10NativeException on invalid or unexcepted data format */ public static Ole10Native createFromEmbeddedOleObject(DirectoryNode directory) throws IOException, Ole10NativeException { - DocumentEntry nativeEntry = (DocumentEntry)directory.getEntry(OLE10_NATIVE); - try (DocumentInputStream dis = directory.createDocumentInputStream(nativeEntry)) { - byte[] data = IOUtils.toByteArray(dis, nativeEntry.getSize(), MAX_RECORD_LENGTH); - return new Ole10Native(data, 0); - } + DocumentEntry nativeEntry = (DocumentEntry) directory.getEntry(OLE10_NATIVE); + try (DocumentInputStream dis = directory.createDocumentInputStream(nativeEntry)) { + byte[] data = IOUtils.toByteArray(dis, nativeEntry.getSize(), MAX_RECORD_LENGTH); + return new Ole10Native(data, 0); + } } /** * Creates an instance and fills the fields based on ... the fields */ public Ole10Native(String label, String filename, String command, byte[] data) { - setLabel(label); - setFileName(filename); - setCommand(command); - setDataBuffer(data); - mode = EncodingMode.parsed; + setLabel(label); + setFileName(filename); + setCommand(command); + command2 = command; + setDataBuffer(data); + mode = EncodingMode.parsed; } /** @@ -132,81 +157,64 @@ public class Ole10Native { * @param offset The start offset of the record in the buffer * @throws Ole10NativeException on invalid or unexcepted data format */ - public Ole10Native(byte[] data, int offset) throws Ole10NativeException { - int ofs = offset; // current offset, initialized to start + public Ole10Native(final byte[] data, final int offset) throws Ole10NativeException { + LittleEndianByteArrayInputStream leis = new LittleEndianByteArrayInputStream(data, offset); - if (data.length < offset + 2) { - throw new Ole10NativeException("data is too small"); - } + totalSize = leis.readInt(); + leis.limit(totalSize + LittleEndianConsts.INT_SIZE); - totalSize = LittleEndian.getInt(data, ofs); - ofs += LittleEndianConsts.INT_SIZE; + leis.mark(0); - mode = EncodingMode.unparsed; - if (LittleEndian.getShort(data, ofs) == 2) { - // some files like equations don't have a valid filename, - // but somehow encode the formula right away in the ole10 header - if (Character.isISOControl(data[ofs+LittleEndianConsts.SHORT_SIZE])) { - mode = EncodingMode.compact; + try { + flags1 = leis.readShort(); + if (flags1 == 2) { + leis.mark(0); + // some files like equations don't have a valid filename, + // but somehow encode the formula right away in the ole10 header + boolean validFileName = !Character.isISOControl(leis.readByte()); + leis.reset(); + + if (validFileName) { + readParsed(leis); + } else { + readCompact(leis); + } } else { - mode = EncodingMode.parsed; + leis.reset(); + readUnparsed(leis); } + } catch (IOException e) { + throw new Ole10NativeException("Invalid Ole10Native", e); } + } - int dataSize; - switch (mode) { - case parsed: { - flags1 = LittleEndian.getShort(data, ofs); + private void readParsed(LittleEndianByteArrayInputStream leis) throws Ole10NativeException, IOException { + mode = EncodingMode.parsed; + label = readAsciiZ(leis); + fileName = readAsciiZ(leis); + flags2 = leis.readShort(); + unknown1 = leis.readShort(); + command = readAsciiLen(leis); + dataBuffer = IOUtils.toByteArray(leis, leis.readInt(), MAX_RECORD_LENGTH); - // structured format - ofs += LittleEndianConsts.SHORT_SIZE; - - int len = getStringLength(data, ofs); - label = StringUtil.getFromCompressedUnicode(data, ofs, len - 1); - ofs += len; - - len = getStringLength(data, ofs); - fileName = StringUtil.getFromCompressedUnicode(data, ofs, len - 1); - ofs += len; - - flags2 = LittleEndian.getShort(data, ofs); - ofs += LittleEndianConsts.SHORT_SIZE; - - unknown1 = LittleEndian.getShort(data, ofs); - ofs += LittleEndianConsts.SHORT_SIZE; - - len = LittleEndian.getInt(data, ofs); - ofs += LittleEndianConsts.INT_SIZE; - command = StringUtil.getFromCompressedUnicode(data, ofs, len - 1); - ofs += len; - - if (totalSize < ofs) { - throw new Ole10NativeException("Invalid Ole10Native"); - } - - dataSize = LittleEndian.getInt(data, ofs); - ofs += LittleEndianConsts.INT_SIZE; - - if (dataSize < 0 || totalSize - (ofs - LittleEndianConsts.INT_SIZE) < dataSize) { - throw new Ole10NativeException("Invalid Ole10Native"); - } - break; - } - case compact: - flags1 = LittleEndian.getShort(data, ofs); - ofs += LittleEndianConsts.SHORT_SIZE; - dataSize = totalSize - LittleEndianConsts.SHORT_SIZE; - break; - default: - case unparsed: - dataSize = totalSize; - break; + leis.mark(0); + short lowSize = leis.readShort(); + if (lowSize != 0) { + leis.reset(); + command2 = readUtf16(leis); + label2 = readUtf16(leis); + fileName2 = readUtf16(leis); } + } - if ((long)dataSize + (long)ofs > (long)data.length) { //cast to avoid overflow - throw new Ole10NativeException("Invalid Ole10Native: declared data length > available data"); - } - dataBuffer = IOUtils.safelyClone(data, ofs, dataSize, MAX_RECORD_LENGTH); + private void readCompact(LittleEndianByteArrayInputStream leis) throws IOException { + mode = EncodingMode.compact; + dataBuffer = IOUtils.toByteArray(leis, totalSize - LittleEndianConsts.SHORT_SIZE, MAX_RECORD_LENGTH); + } + + private void readUnparsed(LittleEndianByteArrayInputStream leis) throws IOException { + mode = EncodingMode.unparsed; + dataBuffer = IOUtils.toByteArray(leis, totalSize, MAX_RECORD_LENGTH); } /** @@ -230,16 +238,30 @@ public class Ole10Native { } - /* - * Helper - determine length of zero terminated string (ASCIIZ). + /** + * Read zero terminated string (ASCIIZ). */ - private static int getStringLength(byte[] data, int ofs) { - int len = 0; - while (len + ofs < data.length && data[ofs + len] != 0) { - len++; + private static String readAsciiZ(LittleEndianInput is) throws Ole10NativeException { + // arbitrary sized buffer - not sure how big strings can get in an Ole10 record + byte[] buf = new byte[MAX_STRING_LENGTH]; + for (int i=0; i oleShapes = new ArrayList<>(); + List ole10s = new ArrayList<>(); + List digests = new ArrayList<>(); + + final boolean digestMatch = + wb.getSheetAt(0).getDrawingPatriarch().getShapes().stream() + .map(s -> (XSSFObjectData)s) + .filter(oleShapes::add) + .map(TestEmbedOLEPackage::extractOle10Native) + .filter(ole10s::add) + .map(TestEmbedOLEPackage::digest) + .allMatch("FUJBVHTAZ0ly/TNDNmEj1gQ4a2TbZwDMVF4WUkDQLaM="::equals); + + assertEquals(2, oleShapes.size()); + assertEquals("Package", oleShapes.get(0).getOLE2ClassName()); + assertEquals("Package2", oleShapes.get(1).getOLE2ClassName()); + assertTrue(digestMatch); + + final String expLabel = "Apache_POI_project_logo_(2018).pdf"; + final String expFilenName = "C:\\Dell\\Apache_POI_project_logo_(2018).pdf"; + final String expCmd1 = "C:\\Users\\KIWIWI~1\\AppData\\Local\\Temp\\{84287F34-B79C-4F3A-9A92-6BB664586F48}\\Apache_POI_project_logo_(2018).pdf"; + final String expCmd2 = "C:\\Users\\KIWIWI~1\\AppData\\Local\\Temp\\{84287F34-B79C-4F3A-9A92-6BB664586F48}\\Apache_POI_project_logo_(2).pdf"; + + assertTrue(ole10s.stream().map(Ole10Native::getLabel).allMatch(expLabel::equals)); + assertTrue(ole10s.stream().map(Ole10Native::getFileName).allMatch(expFilenName::equals)); + assertEquals(expCmd1, ole10s.get(0).getCommand()); + assertEquals(expCmd2, ole10s.get(1).getCommand()); + + for (Ole10Native o : ole10s) { + assertEquals(o.getLabel(), o.getLabel2()); + assertEquals(o.getCommand(), o.getCommand2()); + assertEquals(o.getFileName(), o.getFileName2()); + } + + Ole10Native scratch = new Ole10Native(expLabel, expFilenName, expCmd1, ole10s.get(0).getDataBuffer()); + scratch.setLabel2(expLabel); + scratch.setFileName2(expFilenName); + scratch.setCommand2(expCmd1); + + try (POIFSFileSystem scratchFS = new POIFSFileSystem(); + POIFSFileSystem ole1FS = new POIFSFileSystem(new ByteArrayInputStream(oleShapes.get(0).getObjectData()))) { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + scratch.writeOut(bos); + scratchFS.createDocument(new ByteArrayInputStream(bos.toByteArray()), Ole10Native.OLE10_NATIVE); + scratchFS.getRoot().setStorageClsid(ClassIDPredefined.OLE_V1_PACKAGE.getClassID()); + assertTrue(EntryUtils.areDirectoriesIdentical(ole1FS.getRoot(), scratchFS.getRoot())); + } + } + } + + private static Ole10Native extractOle10Native(XSSFObjectData objectData) { + try (InputStream is = objectData.getObjectPart().getInputStream(); + POIFSFileSystem poifs = new POIFSFileSystem(is)) { + return Ole10Native.createFromEmbeddedOleObject(poifs); + } catch (IOException | Ole10NativeException e) { + throw new AssertionError(e.getMessage(), e); + } + } + + private static String digest(Ole10Native ole10) { + MessageDigest sha = CryptoFunctions.getMessageDigest(HashAlgorithm.sha256); + byte[] digest = sha.digest(ole10.getDataBuffer()); + return Base64.encodeBase64String(digest); + } + @Test public void embedXSSF() throws IOException { Workbook wb1 = new XSSFWorkbook(); @@ -71,9 +156,9 @@ public class TestEmbedOLEPackage { public void embedHSSF() throws IOException { assumeFalse(xslfOnly()); - Workbook wb1 = new HSSFWorkbook(); + HSSFWorkbook wb1 = new HSSFWorkbook(); addEmbeddedObjects(wb1); - Workbook wb2 = HSSFTestDataSamples.writeOutAndReadBack((HSSFWorkbook)wb1); + Workbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); validateEmbeddedObjects(wb2); wb2.close(); @@ -97,17 +182,17 @@ public class TestEmbedOLEPackage { } } } - + static void addEmbeddedObjects(Workbook wb) throws IOException { boolean ooxml = wb.getClass().getName().toLowerCase(Locale.ROOT).contains("xssf"); int picIdx = wb.addPicture(samplePNG, Workbook.PICTURE_TYPE_PNG); byte[] data = (ooxml) ? samplePPTX : samplePPT; String ext = (ooxml) ? ".pptx" : ".ppt"; - + int oleIdx1a = wb.addOlePackage(data, "dummy1a"+ext, "dummy1a"+ext, "dummy1a"+ext); int oleIdx1b = wb.addOlePackage(data, "dummy1b"+ext, "dummy1b"+ext, "dummy1b"+ext); int oleIdx2 = wb.addOlePackage(data, "dummy2"+ext, "dummy2"+ext, "dummy2"+ext); - + Sheet sh1 = wb.createSheet(); Drawing pat1 = sh1.createDrawingPatriarch(); ClientAnchor anchor1a = pat1.createAnchor(0, 0, 0, 0, 1, 1, 3, 6); @@ -120,7 +205,7 @@ public class TestEmbedOLEPackage { ClientAnchor anchor2 = pat2.createAnchor(0, 0, 0, 0, 1, 1, 3, 6); pat2.createObjectData(anchor2, oleIdx2, picIdx); } - + static byte[] getSamplePPT(boolean ooxml) throws IOException, ReflectiveOperationException { SlideShow ppt = (ooxml) ? new XMLSlideShow() : (SlideShow)Class.forName("org.apache.poi.hslf.usermodel.HSLFSlideShow").newInstance(); diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestOle10Native.java b/src/testcases/org/apache/poi/poifs/filesystem/TestOle10Native.java index ad686358d0..4de08c4c5c 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestOle10Native.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestOle10Native.java @@ -17,11 +17,9 @@ package org.apache.poi.poifs.filesystem; -import static org.apache.poi.POITestCase.assertContains; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; -import static org.junit.Assert.fail; import java.io.ByteArrayOutputStream; import java.io.File; @@ -33,11 +31,17 @@ import java.util.List; import org.apache.poi.POIDataSamples; import org.apache.poi.util.IOUtils; +import org.apache.poi.util.RecordFormatException; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; public class TestOle10Native { private static final POIDataSamples dataSamples = POIDataSamples.getPOIFSInstance(); + @Rule + public ExpectedException thrown = ExpectedException.none(); + @Test public void testOleNative() throws IOException, Ole10NativeException { POIFSFileSystem fs = new POIFSFileSystem(dataSamples.openResourceAsStream("oleObject1.bin")); @@ -59,26 +63,26 @@ public class TestOle10Native { POIDataSamples.getDocumentInstance().getFile("Bug53380_3.doc"), POIDataSamples.getDocumentInstance().getFile("Bug47731.doc") }; - + for (File f : files) { POIFSFileSystem fs = new POIFSFileSystem(f, true); List entries = new ArrayList<>(); findOle10(entries, fs.getRoot(), "/"); - + for (Entry e : entries) { ByteArrayOutputStream bosExp = new ByteArrayOutputStream(); InputStream is = ((DirectoryNode)e.getParent()).createDocumentInputStream(e); IOUtils.copy(is,bosExp); is.close(); - + Ole10Native ole = Ole10Native.createFromEmbeddedOleObject((DirectoryNode)e.getParent()); - + ByteArrayOutputStream bosAct = new ByteArrayOutputStream(); ole.writeOut(bosAct); - + assertThat(bosExp.toByteArray(), equalTo(bosAct.toByteArray())); } - + fs.close(); } } @@ -97,14 +101,11 @@ public class TestOle10Native { } @Test - public void testOleNativeOOM() throws IOException { + public void testOleNativeOOM() throws IOException, Ole10NativeException { POIFSFileSystem fs = new POIFSFileSystem(dataSamples.openResourceAsStream("60256.bin")); - try { - Ole10Native.createFromEmbeddedOleObject(fs); - fail("Should have thrown exception because OLENative lacks a length parameter"); - } catch (Ole10NativeException e) { - assertContains(e.getMessage(), "declared data length"); - } + thrown.expect(RecordFormatException.class); + thrown.expectMessage("Tried to allocate"); + Ole10Native.createFromEmbeddedOleObject(fs); } } diff --git a/test-data/spreadsheet/bug64512_embed.xlsx b/test-data/spreadsheet/bug64512_embed.xlsx new file mode 100755 index 0000000000000000000000000000000000000000..1c5fd50f1e01b55493fab8d44af6cc26dff9fddd GIT binary patch literal 49746 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