From 94ad220ade54c5449f47e1098f52219415fd3ed0 Mon Sep 17 00:00:00 2001 From: Jeremy Powell Date: Tue, 12 Nov 2024 21:38:25 +1300 Subject: [PATCH 1/5] Seal StreamDataProvider --- StructuredStorageExplorer/StreamDataProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StructuredStorageExplorer/StreamDataProvider.cs b/StructuredStorageExplorer/StreamDataProvider.cs index e99c23b7..d2973128 100644 --- a/StructuredStorageExplorer/StreamDataProvider.cs +++ b/StructuredStorageExplorer/StreamDataProvider.cs @@ -3,7 +3,7 @@ namespace StructuredStorageExplorer; -public class StreamDataProvider : IByteProvider +internal sealed class StreamDataProvider : IByteProvider { /// /// Modifying stream From c9b8d2385c2d362857e740e481a27ea224357ec7 Mon Sep 17 00:00:00 2001 From: Jeremy Powell Date: Tue, 12 Nov 2024 23:15:32 +1300 Subject: [PATCH 2/5] Fix OLE stack overflow --- OpenMcdf.Ole/DocumentSummaryInfoPropertyFactory.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenMcdf.Ole/DocumentSummaryInfoPropertyFactory.cs b/OpenMcdf.Ole/DocumentSummaryInfoPropertyFactory.cs index 551e55ed..828dbfa6 100644 --- a/OpenMcdf.Ole/DocumentSummaryInfoPropertyFactory.cs +++ b/OpenMcdf.Ole/DocumentSummaryInfoPropertyFactory.cs @@ -11,6 +11,6 @@ protected override ITypedPropertyValue CreateLpstrProperty(VTPropertyType vType, if (propertyIdentifier is 0x0000000C or 0x0000000D) return new VT_Unaligned_LPSTR_Property(vType, codePage, isVariant); - return CreateLpstrProperty(vType, codePage, propertyIdentifier, isVariant); + return base.CreateLpstrProperty(vType, codePage, propertyIdentifier, isVariant); } } From 7ddcf4e484271900e27bfc71305c3c5b34176bf7 Mon Sep 17 00:00:00 2001 From: Jeremy Powell Date: Tue, 12 Nov 2024 23:36:06 +1300 Subject: [PATCH 3/5] Fix OLE BinaryReader/Writer usage --- OpenMcdf.Ole/OlePropertiesContainer.cs | 7 ++++--- OpenMcdf.Ole/PropertySetStream.cs | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/OpenMcdf.Ole/OlePropertiesContainer.cs b/OpenMcdf.Ole/OlePropertiesContainer.cs index 371730d0..f21fea91 100644 --- a/OpenMcdf.Ole/OlePropertiesContainer.cs +++ b/OpenMcdf.Ole/OlePropertiesContainer.cs @@ -1,4 +1,6 @@ -namespace OpenMcdf.Ole; +using System.Text; + +namespace OpenMcdf.Ole; public enum ContainerType { @@ -42,8 +44,7 @@ public OlePropertiesContainer(CfbStream cfStream) this.cfStream = cfStream; - cfStream.Position = 0; - using BinaryReader reader = new(cfStream); + using BinaryReader reader = new(cfStream, Encoding.Unicode, true); pStream.Read(reader); if (pStream.FMTID0 == FormatIdentifiers.SummaryInformation) diff --git a/OpenMcdf.Ole/PropertySetStream.cs b/OpenMcdf.Ole/PropertySetStream.cs index 2f3de824..57caf285 100644 --- a/OpenMcdf.Ole/PropertySetStream.cs +++ b/OpenMcdf.Ole/PropertySetStream.cs @@ -28,6 +28,8 @@ public PropertySetStream() public void Read(BinaryReader br) { + br.BaseStream.Position = 0; + ByteOrder = br.ReadUInt16(); Version = br.ReadUInt16(); SystemIdentifier = br.ReadUInt32(); @@ -113,6 +115,8 @@ public void Read(BinaryReader br) public void Write(BinaryWriter bw) { + bw.BaseStream.Position = 0; + OffsetContainer oc0 = new(); OffsetContainer oc1 = new(); From 502926cfeb90e0a103e2e1d1a8054e738618a072 Mon Sep 17 00:00:00 2001 From: Jeremy Powell Date: Tue, 12 Nov 2024 23:45:59 +1300 Subject: [PATCH 4/5] Fix encoding provider registration --- OpenMcdf.Ole/CodePages.cs | 4 +++- OpenMcdf.Ole/PropertyFactory.cs | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenMcdf.Ole/CodePages.cs b/OpenMcdf.Ole/CodePages.cs index 1f5a22c7..fdf34886 100644 --- a/OpenMcdf.Ole/CodePages.cs +++ b/OpenMcdf.Ole/CodePages.cs @@ -1,4 +1,6 @@ -namespace OpenMcdf.Ole; +using System.Text; + +namespace OpenMcdf.Ole; internal static class CodePages { diff --git a/OpenMcdf.Ole/PropertyFactory.cs b/OpenMcdf.Ole/PropertyFactory.cs index f8a699f1..9a1df14a 100644 --- a/OpenMcdf.Ole/PropertyFactory.cs +++ b/OpenMcdf.Ole/PropertyFactory.cs @@ -6,9 +6,7 @@ internal abstract class PropertyFactory { static PropertyFactory() { -#if NETSTANDARD2_0_OR_GREATER Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); -#endif } public ITypedPropertyValue CreateProperty(VTPropertyType vType, int codePage, uint propertyIdentifier, bool isVariant = false) From f454dac12c1ce2c1d33a8519bebb3510d4fe3080 Mon Sep 17 00:00:00 2001 From: Jeremy Powell Date: Tue, 12 Nov 2024 23:11:17 +1300 Subject: [PATCH 5/5] Add OLE tests --- OpenMcdf.Ole.Tests/2custom.doc | Bin 0 -> 27136 bytes OpenMcdf.Ole.Tests/CLSIDPropertyTest.file | Bin 0 -> 245760 bytes OpenMcdf.Ole.Tests/Issue134.cfs | Bin 0 -> 2560 bytes .../OlePropertiesExtensionsTests.cs | 440 ++++++++++++++++++ OpenMcdf.Ole.Tests/OpenMcdf.Ole.Tests.csproj | 54 +++ OpenMcdf.Ole.Tests/SampleWorkBook_bug98.xls | Bin 0 -> 19456 bytes OpenMcdf.Ole.Tests/_Test.ppt | Bin 0 -> 174592 bytes OpenMcdf.Ole.Tests/english.presets.doc | Bin 0 -> 9728 bytes OpenMcdf.Ole.Tests/report.xls | Bin 0 -> 16896 bytes OpenMcdf.Ole.Tests/winUnicodeDictionary.doc | Bin 0 -> 26624 bytes OpenMcdf.Ole.Tests/wstr_presets.doc | Bin 0 -> 27136 bytes OpenMcdf.Tests/OpenMcdf.Tests.csproj | 2 +- OpenMcdf.sln | 6 + OpenMcdf/RootStorage.cs | 4 +- 14 files changed, 504 insertions(+), 2 deletions(-) create mode 100644 OpenMcdf.Ole.Tests/2custom.doc create mode 100644 OpenMcdf.Ole.Tests/CLSIDPropertyTest.file create mode 100644 OpenMcdf.Ole.Tests/Issue134.cfs create mode 100644 OpenMcdf.Ole.Tests/OlePropertiesExtensionsTests.cs create mode 100644 OpenMcdf.Ole.Tests/OpenMcdf.Ole.Tests.csproj create mode 100644 OpenMcdf.Ole.Tests/SampleWorkBook_bug98.xls create mode 100644 OpenMcdf.Ole.Tests/_Test.ppt create mode 100644 OpenMcdf.Ole.Tests/english.presets.doc create mode 100644 OpenMcdf.Ole.Tests/report.xls create mode 100644 OpenMcdf.Ole.Tests/winUnicodeDictionary.doc create mode 100644 OpenMcdf.Ole.Tests/wstr_presets.doc diff --git a/OpenMcdf.Ole.Tests/2custom.doc b/OpenMcdf.Ole.Tests/2custom.doc new file mode 100644 index 0000000000000000000000000000000000000000..0d53d3a1ae713c9cf17f3e8cfe094ced38e54ee0 GIT binary patch literal 27136 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 RZGl*zM3RiRYX5WB{{xX)F>C+; literal 0 HcmV?d00001 diff --git a/OpenMcdf.Ole.Tests/CLSIDPropertyTest.file b/OpenMcdf.Ole.Tests/CLSIDPropertyTest.file new file mode 100644 index 0000000000000000000000000000000000000000..27b609bf61b6e6e31b5186e8d59f95ef3b3ff142 GIT binary patch literal 245760 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 CT~pZr literal 0 HcmV?d00001 diff --git a/OpenMcdf.Ole.Tests/Issue134.cfs b/OpenMcdf.Ole.Tests/Issue134.cfs new file mode 100644 index 0000000000000000000000000000000000000000..f53f9b4f799023a10a089ad3361fbc38027fb8d6 GIT binary patch literal 2560 zcmeHH%}N4M7(JsI8U$M4!i_#cQAjIsQDB=0@c}e(QB(t(LA#dXQ%on_m$ z)Z)oTv_&sqF>`y&4tKfcKN1=D&=R~ zqC=SU6zMMe#5Fxl+|i@yMrb(k@BR>4g^0rS0_r>UnEFS364gMs@?YgdG@WU9 z;mp-GURVYGDT{>Ry_h${{p>Eg&X=6j9ZvEVj&XuhKU +/// Summary description for UnitTest1 +/// +[TestClass] +public class OlePropertiesExtensionsTests +{ + [TestMethod] + public void ReadSummaryInformation() + { + using var cf = RootStorage.OpenRead("_Test.ppt"); + using CfbStream stream = cf.OpenStream("\u0005SummaryInformation"); + OlePropertiesContainer co = new(stream); + + foreach (OleProperty p in co.Properties) + { + Debug.WriteLine(p); + } + } + + [TestMethod] + public void ReadDocumentSummaryInformation() + { + using var cf = RootStorage.OpenRead("_Test.ppt"); + using CfbStream stream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(stream); + + foreach (OleProperty p in co.Properties) + { + Debug.WriteLine(p); + } + } + + [TestMethod] + public void ReadThenWriteDocumentSummaryInformation() + { + using var cf = RootStorage.OpenRead("_Test.ppt"); + using CfbStream stream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(stream); + + using var cf2 = RootStorage.CreateInMemory(); + using CfbStream stream2 = cf2.CreateStream("\u0005DocumentSummaryInformation"); + co.Save(stream2); + } + + // Modify some document summary information properties, save to a file, and then validate the expected results + [TestMethod] + public void ModifyDocumentSummaryInformation() + { + using MemoryStream modifiedStream = new(); + using (FileStream stream = File.OpenRead("_Test.ppt")) + stream.CopyTo(modifiedStream); + + // Verify initial properties, and then create a modified document + using (var cf = RootStorage.Open(modifiedStream, StorageModeFlags.LeaveOpen)) + { + using CfbStream dsiStream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(dsiStream); + + // The company property should exist but be empty + OleProperty companyProperty = co.Properties.First(prop => prop.PropertyName == "PIDDSI_COMPANY"); + Assert.AreEqual("", companyProperty.Value); + + // As a sanity check, check that the value of a property that we don't change remains the same + OleProperty formatProperty = co.Properties.First(prop => prop.PropertyName == "PIDDSI_PRESFORMAT"); + Assert.AreEqual("A4 Paper (210x297 mm)", formatProperty.Value); + + // The manager property shouldn't exist, and we'll add it + Assert.IsFalse(co.Properties.Any(prop => prop.PropertyName == "PIDDSI_MANAGER")); + + OleProperty managerProp = co.CreateProperty(VTPropertyType.VT_LPSTR, 0x0000000E, "PIDDSI_MANAGER"); + co.Add(managerProp); + + companyProperty.Value = "My Company"; + managerProp.Value = "The Boss"; + + co.Save(dsiStream); + } + + using (var cf = RootStorage.Open(modifiedStream)) + { + using CfbStream stream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(stream); + + OleProperty companyProperty = co.Properties.First(prop => prop.PropertyName == "PIDDSI_COMPANY"); + Assert.AreEqual("My Company", companyProperty.Value); + + OleProperty formatProperty = co.Properties.First(prop => prop.PropertyName == "PIDDSI_PRESFORMAT"); + Assert.AreEqual("A4 Paper (210x297 mm)", formatProperty.Value); + + OleProperty managerProperty = co.Properties.First(prop => prop.PropertyName == "PIDDSI_MANAGER"); + Assert.AreEqual("The Boss", managerProperty.Value); + } + } + + [TestMethod] + public void ReadSummaryInformationUtf8() + { + // Regression test for #33 + using var cf = RootStorage.Open("wstr_presets.doc", FileMode.Open); + using CfbStream stream = cf.OpenStream("\u0005SummaryInformation"); + OlePropertiesContainer co = new(stream); + + foreach (OleProperty p in co.Properties) + { + Debug.WriteLine(p); + } + + using CfbStream stream2 = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co2 = new(stream2); + + foreach (OleProperty p in co2.Properties) + { + Debug.WriteLine(p); + } + } + + [TestMethod] + public void ReadSummaryInformationUtf8Part2() + { + // Regression test for #34 + using var cf = RootStorage.OpenRead("2custom.doc"); + using CfbStream stream = cf.OpenStream("\u0005SummaryInformation"); + OlePropertiesContainer co = new(stream); + + foreach (OleProperty p in co.Properties) + { + Debug.WriteLine(p); + } + + using CfbStream stream2 = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co2 = new(stream2); + + foreach (OleProperty p in co2.Properties) + { + Debug.WriteLine(p); + } + + if (co2.UserDefinedProperties is not null) + { + foreach (OleProperty p in co2.UserDefinedProperties.Properties) + { + Debug.WriteLine(p); + } + } + } + + [TestMethod] + public void SummaryInformationReadLpwstring() + { + using var cf = RootStorage.OpenRead("english.presets.doc"); + using CfbStream stream = cf.OpenStream("\u0005SummaryInformation"); + OlePropertiesContainer co = new(stream); + + foreach (OleProperty p in co.Properties) + { + Debug.WriteLine(p); + } + } + + // Test that we can modify an LPWSTR property, and the value is null terminated as required + [TestMethod] + public void SummaryInformationModifyLpwstring() + { + using MemoryStream modifiedStream = new(); + using (FileStream stream = File.OpenRead("wstr_presets.doc")) + stream.CopyTo(modifiedStream); + + // Modify some LPWSTR properties, and save to a new file + using (var cf = RootStorage.Open(modifiedStream, StorageModeFlags.LeaveOpen)) + { + using CfbStream dsiStream = cf.OpenStream("\u0005SummaryInformation"); + OlePropertiesContainer co = new(dsiStream); + + OleProperty authorProperty = co.Properties.First(prop => prop.PropertyName == "PIDSI_AUTHOR"); + Assert.AreEqual(VTPropertyType.VT_LPWSTR, authorProperty.VTType); + Assert.AreEqual("zkyiqpqoroxnbdwhnjfqroxlgylpbgcwuhjfifpkvycugvuecoputqgknnbs", authorProperty.Value); + + OleProperty keyWordsProperty = co.Properties.First(prop => prop.PropertyName == "PIDSI_KEYWORDS"); + Assert.AreEqual(VTPropertyType.VT_LPWSTR, keyWordsProperty.VTType); + Assert.AreEqual("abcdefghijk", keyWordsProperty.Value); + + authorProperty.Value = "ABC"; + keyWordsProperty.Value = ""; + co.Save(dsiStream); + } + + // Open the new file and check for the expected values + using (var cf = RootStorage.Open(modifiedStream)) + { + using CfbStream stream = cf.OpenStream("\u0005SummaryInformation"); + OlePropertiesContainer co = new(stream); + + OleProperty authorProperty = co.Properties.First(prop => prop.PropertyName == "PIDSI_AUTHOR"); + Assert.AreEqual(VTPropertyType.VT_LPWSTR, authorProperty.VTType); + Assert.AreEqual("ABC", authorProperty.Value); + + OleProperty keyWordsProperty = co.Properties.First(prop => prop.PropertyName == "PIDSI_KEYWORDS"); + Assert.AreEqual(VTPropertyType.VT_LPWSTR, keyWordsProperty.VTType); + Assert.AreEqual("", keyWordsProperty.Value); + } + } + + // winUnicodeDictionary.doc contains a UserProperties section with the CP_WINUNICODE codepage, and LPWSTR string properties + [TestMethod] + public void TestReadUnicodeUserPropertiesDictionary() + { + using var cf = RootStorage.OpenRead("winUnicodeDictionary.doc"); + CfbStream dsiStream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(dsiStream); + OlePropertiesContainer? userProps = co.UserDefinedProperties; + + // CodePage should be CP_WINUNICODE (1200) + Assert.AreEqual(1200, userProps.Context.CodePage); + + // There should be 5 property names present, and 6 properties (the properties include the code page) + Assert.AreEqual(5, userProps.PropertyNames.Count); + Assert.AreEqual(6, userProps.Properties.Count); + + // Check for expected names and values + OleProperty[] propArray = userProps.Properties.ToArray(); + + // CodePage prop + Assert.AreEqual(1u, propArray[0].PropertyIdentifier); + Assert.AreEqual("0x00000001", propArray[0].PropertyName); + Assert.AreEqual((short)1200, propArray[0].Value); + + // String properties + Assert.AreEqual("A", propArray[1].PropertyName); + Assert.AreEqual("", propArray[1].Value); + Assert.AreEqual("AB", propArray[2].PropertyName); + Assert.AreEqual("X", propArray[2].Value); + Assert.AreEqual("ABC", propArray[3].PropertyName); + Assert.AreEqual("XY", propArray[3].Value); + Assert.AreEqual("ABCD", propArray[4].PropertyName); + Assert.AreEqual("XYZ", propArray[4].Value); + Assert.AreEqual("ABCDE", propArray[5].PropertyName); + Assert.AreEqual("XYZ!", propArray[5].Value); + } + + // Test that we can add user properties of various types and then read them back + [TestMethod] + public void AddDocumentSummaryInformationCustomInfo() + { + using MemoryStream modifiedStream = new(); + using (FileStream stream = File.OpenRead("english.presets.doc")) + stream.CopyTo(modifiedStream); + + // Test value for a VT_FILETIME property + DateTime testNow = DateTime.UtcNow; + + // english.presets.doc has a user defined property section, but no properties other than the codepage + using (var cf = RootStorage.Open(modifiedStream, StorageModeFlags.LeaveOpen)) + { + using CfbStream dsiStream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(dsiStream); + OlePropertiesContainer? userProperties = co.UserDefinedProperties; + + userProperties.PropertyNames[2] = "StringProperty"; + userProperties.PropertyNames[3] = "BooleanProperty"; + userProperties.PropertyNames[4] = "IntegerProperty"; + userProperties.PropertyNames[5] = "DateProperty"; + userProperties.PropertyNames[6] = "DoubleProperty"; + + OleProperty stringProperty = co.CreateProperty(VTPropertyType.VT_LPSTR, 2); + stringProperty.Value = "Hello"; + userProperties.Add(stringProperty); + + OleProperty booleanProperty = co.CreateProperty(VTPropertyType.VT_BOOL, 3); + booleanProperty.Value = true; + userProperties.Add(booleanProperty); + + OleProperty integerProperty = co.CreateProperty(VTPropertyType.VT_I4, 4); + integerProperty.Value = 3456; + userProperties.Add(integerProperty); + + OleProperty timeProperty = co.CreateProperty(VTPropertyType.VT_FILETIME, 5); + timeProperty.Value = testNow; + userProperties.Add(timeProperty); + + OleProperty doubleProperty = co.CreateProperty(VTPropertyType.VT_R8, 6); + doubleProperty.Value = 1.234567d; + userProperties.Add(doubleProperty); + + co.Save(dsiStream); + } + + using (var cf = RootStorage.Open(modifiedStream)) + { + using CfbStream stream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(stream); + OleProperty[] propArray = co.UserDefinedProperties.Properties.ToArray(); + Assert.AreEqual(6, propArray.Length); + + // CodePage prop + Assert.AreEqual(1u, propArray[0].PropertyIdentifier); + Assert.AreEqual("0x00000001", propArray[0].PropertyName); + Assert.AreEqual((short)-535, propArray[0].Value); + + // User properties + Assert.AreEqual("StringProperty", propArray[1].PropertyName); + Assert.AreEqual("Hello", propArray[1].Value); + Assert.AreEqual(VTPropertyType.VT_LPSTR, propArray[1].VTType); + Assert.AreEqual("BooleanProperty", propArray[2].PropertyName); + Assert.AreEqual(true, propArray[2].Value); + Assert.AreEqual(VTPropertyType.VT_BOOL, propArray[2].VTType); + Assert.AreEqual("IntegerProperty", propArray[3].PropertyName); + Assert.AreEqual(3456, propArray[3].Value); + Assert.AreEqual(VTPropertyType.VT_I4, propArray[3].VTType); + Assert.AreEqual("DateProperty", propArray[4].PropertyName); + Assert.AreEqual(testNow, propArray[4].Value); + Assert.AreEqual(VTPropertyType.VT_FILETIME, propArray[4].VTType); + Assert.AreEqual("DoubleProperty", propArray[5].PropertyName); + Assert.AreEqual(1.234567d, propArray[5].Value); + Assert.AreEqual(VTPropertyType.VT_R8, propArray[5].VTType); + } + } + + // Try to read a document which contains Vector/String properties + // refs https://github.com/ironfede/openmcdf/issues/98 + [TestMethod] + public void ReadLpwstringVector() + { + using var cf = RootStorage.OpenRead("SampleWorkBook_bug98.xls"); + using CfbStream stream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(stream); + + OleProperty docPartsProperty = co.Properties.FirstOrDefault(property => property.PropertyIdentifier == 13); //13 == PIDDSI_DOCPARTS + + var docPartsValues = docPartsProperty.Value as IList; + Assert.AreEqual(3, docPartsValues.Count); + Assert.AreEqual("Sheet1", docPartsValues[0]); + Assert.AreEqual("Sheet2", docPartsValues[1]); + Assert.AreEqual("Sheet3", docPartsValues[2]); + } + + [TestMethod] + public void ReadClsidProperty() + { + Guid guid = new("15891a95-bf6e-4409-b7d0-3a31c391fa31"); + using var cf = RootStorage.OpenRead("CLSIDPropertyTest.file"); + using CfbStream stream = cf.OpenStream("\u0005C3teagxwOttdbfkuIaamtae3Ie"); + OlePropertiesContainer co = new(stream); + OleProperty clsidProp = co.Properties.First(x => x.PropertyName == "DocumentID"); + Assert.AreEqual(guid, clsidProp.Value); + } + + // The test file 'report.xls' contains a DocumentSummaryInfo section, but no user defined properties. + // This tests adding a new user defined properties section to the existing DocumentSummaryInfo. + [TestMethod] + public void AddUserDefinedPropertiesSection() + { + using MemoryStream modifiedStream = new(); + using (FileStream stream = File.OpenRead("report.xls")) + stream.CopyTo(modifiedStream); + + using (var cf = RootStorage.Open(modifiedStream, StorageModeFlags.LeaveOpen)) + { + using CfbStream dsiStream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(dsiStream); + + Assert.IsNull(co.UserDefinedProperties); + + OlePropertiesContainer newUserDefinedProperties = co.CreateUserDefinedProperties(65001); // 65001 - UTF-8 + + newUserDefinedProperties.PropertyNames[2] = "MyCustomProperty"; + + OleProperty CreateProperty = co.CreateProperty(VTPropertyType.VT_LPSTR, 2); + CreateProperty.Value = "Testing"; + newUserDefinedProperties.Add(CreateProperty); + + co.Save(dsiStream); + } + + using (var cf = RootStorage.Open(modifiedStream)) + { + using CfbStream stream = cf.OpenStream("\u0005DocumentSummaryInformation"); + OlePropertiesContainer co = new(stream); + + // User defined properties should be present now + Assert.IsNotNull(co.UserDefinedProperties); + Assert.AreEqual(65001, co.UserDefinedProperties.Context.CodePage); + + // And the expected properties should the there + OleProperty[] propArray = co.UserDefinedProperties.Properties.ToArray(); + Assert.AreEqual(propArray.Length, 2); + + // CodePage prop + Assert.AreEqual(1u, propArray[0].PropertyIdentifier); + Assert.AreEqual("0x00000001", propArray[0].PropertyName); + Assert.AreEqual((short)-535, propArray[0].Value); + + // User properties + Assert.AreEqual("MyCustomProperty", propArray[1].PropertyName); + Assert.AreEqual("Testing", propArray[1].Value); + Assert.AreEqual(VTPropertyType.VT_LPSTR, propArray[1].VTType); + } + } + + // A test for the issue described in https://github.com/ironfede/openmcdf/issues/134 where modifying an AppSpecific stream + // removes any already-existing Dictionary property + [TestMethod] + public void TestRetainDictionaryPropertyInAppSpecificStreams() + { + using MemoryStream modifiedStream = new(); + using (FileStream stream = File.OpenRead("Issue134.cfs")) + stream.CopyTo(modifiedStream); + + Dictionary expectedPropertyNames = new() + { + [2] = "Document Number", + [3] = "Revision", + [4] = "Project Name" + }; + + using (var cf = RootStorage.Open(modifiedStream, StorageModeFlags.LeaveOpen)) + { + using CfbStream testStream = cf.OpenStream("Issue134"); + OlePropertiesContainer co = new(testStream); + + CollectionAssert.AreEqual(expectedPropertyNames, co.PropertyNames); + + // Write test file + co.Save(testStream); + } + + // Open test file, and check that the property names are still as expected. + using (var cf = RootStorage.Open(modifiedStream)) + { + using CfbStream testStream = cf.OpenStream("Issue134"); + OlePropertiesContainer co = new(testStream); + + CollectionAssert.AreEqual(expectedPropertyNames, co.PropertyNames); + } + } +} diff --git a/OpenMcdf.Ole.Tests/OpenMcdf.Ole.Tests.csproj b/OpenMcdf.Ole.Tests/OpenMcdf.Ole.Tests.csproj new file mode 100644 index 00000000..59b58f11 --- /dev/null +++ b/OpenMcdf.Ole.Tests/OpenMcdf.Ole.Tests.csproj @@ -0,0 +1,54 @@ + + + + net48;net8.0 + Exe + 12.0 + enable + enable + + false + true + true + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + Always + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + Always + + + PreserveNewest + + + + diff --git a/OpenMcdf.Ole.Tests/SampleWorkBook_bug98.xls b/OpenMcdf.Ole.Tests/SampleWorkBook_bug98.xls new file mode 100644 index 0000000000000000000000000000000000000000..063c04f5b831dbef016db7bae0fb5047488121a0 GIT binary patch literal 19456 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 literal 0 HcmV?d00001 diff --git a/OpenMcdf.Ole.Tests/_Test.ppt b/OpenMcdf.Ole.Tests/_Test.ppt new file mode 100644 index 0000000000000000000000000000000000000000..4b5a7692c487ed3675640407315cdb4240fdb68a GIT binary patch literal 174592 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 sTd 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 literal 0 HcmV?d00001 diff --git a/OpenMcdf.Ole.Tests/english.presets.doc b/OpenMcdf.Ole.Tests/english.presets.doc new file mode 100644 index 0000000000000000000000000000000000000000..3fdf7297b22e4ab8f3bbb14f380655f6ad1d24a0 GIT binary patch literal 9728 zcmeI1Pi$009LMLCZMy}8Qc6WYSxN;&ETxDbpq2tHR7wj)@h`I5UFhoWzPh_j!4vWS zK_mW2yqJiJClgaOp4E%tAd!O}ys0-650w}b67Bl=&f6zTk?pnu0kgCDyqPyU^PAuN z=FgiyXTF{D<9nYh_{ofOo6Iybma8#U1@R8yTK}Cu1!2XF<#IVcnqb*oM;7=iudCWH zKqFRy+PoTqPy^Fp2F!#TU>3{<<(ZTBucIoLRV}cVM_(&s(4rn-$vMpTDOv{`D=;_^*SxP!IE<0d9o(a1$(mg|G;2 zhFf4UgkT9Yg352gzZI6ja##V1Ux|M^tb#kB8CF9JtbtZo3wOdgxC_?92DlqG!Y0@Z z_rSeyAGE<1Xosz^4YorEbixkU30-hM?1FCC4L#5cdtfj0!9I8Z9)$hy5IhWzz@zXO zJPrro2{;I0P#yd6qY%r#pKsAC8*(Up8WX%qsjATz-Iy=!({!l)y5s$6H{%}4hW5MZ z=pEbKr-qWTRMvhIy89Hj&F#0V0)?A-vHv%3Fu&jZ>C>K|Vo%3gMifg@^uIcK+H_VS zkJ>Mimvn$-%5S*}gU`2YH}hNCB(ZdYclF1*Xuac@HBHXklXTjXr_7cnv$DydPqnW! zJzW8_2ex)KnBVVCy5!cgIfw~o@7xg?9 z>q$Mf*fEWc`f)YAI7aHIi6i?kF*h(~=bjv;;zvvswVscRN@P@0*}FlOQ=LoPM*T;30K z1sQjZ$ZdDph^?kJVKYdIxUIePt4G=qtKUrYt3$8(=B}WltYLzW2c2cMhI{d~V%bT} zqEH=CZ z`Qa*pxi&?3BMD!Vq?{s{Fl?XEqN=muxTE-q+&&DGq;eSyyBmKPUmtCC=oFdPA;&MQ zn5;e;ENLR-)G%1PthCa%(Ba~gq&#tHtoeQdrzVe}sk*n{tRW^y#l#r|nkb9cX?=;> zsp}+cX_Cw&tbD$~i)eW%4Q0^``3h^@Syh^)y3wGY8oEeusig+_!|12sC*9VSEJs=# z&f9!l;5dV8V%JUj^SRpT{!Z{!=I=9fjR7lQhH;~xb_$w5|C%t{q%}EKATpQJqOZ^enZ$?b>k&KM zYph=!Q<(lTg~!-&IRDJH=Y^`H{`kVXXV3Kv)PD4O(A>WKvmaFB&HOPFU;ht)j5i3= z;CWz%H}8OE^%2mFehRALSJ2e0%q*GAOnmK&=jUbe*|GcM7JSM5g+|a?S84Xevx!(o zJeG)haoR`s4Mm=e^=I?3UcBTF4#y&yY%ERC=GT7v{@BrB7Fd~1cY9iEM9I~fx^F0% z3}-_-Q>2e&vhmd6RUtPWO1XS;l}2^l?WU9AM03>5CT*N_(|WlLjvYPw8tU3Go^@?{ zuJ|DF?&vr68(o|3`8l)lJ0-iw{raKfbcbp%+i2Yv-oIYQ;zOse<1Di^>?Xpg4PNX8 z`D+3Vrd5^8JLy%-<#MxayGRj*)i!>3e7=`$#G$-M-yff<@Lg%@3nL~7KSO$1_r<*L zC;y!HgYaM78_1Z7n0a*F2pNazvMdVC3BuZymEHf-0&mg2>W5d`RhS>Hc9G@s$`&YF z;F_{P*sgf4DV55~Tulq)*Lhd7$Z}cNj0GJ3GIFA_5tbf5QP~8oz1+?mA8=X*rO#U4R?b-`UzVhnsM_bEXpu6gW;5+^A@6EMx-p9r{mX2rGJlp-T z_Um2lKq_^#-OX?wsC~4~2inu3SBf!bepSfyt5OL8bT!Lij;-E>MZex(B~TqOtdL)c%}3A+2&UCJR^#Je%`kMF&-|Mpx# z`Ai7*ET+`*my$lA&Vt)-%ZhS8=5l;4O=4)E`=Zj^f+^JhHbnd9PL&sxJUM%8m_qpx X%0E?F^-4-*8$SOiC4=sp{d9i=@PHCg literal 0 HcmV?d00001 diff --git a/OpenMcdf.Ole.Tests/report.xls b/OpenMcdf.Ole.Tests/report.xls new file mode 100644 index 0000000000000000000000000000000000000000..7b667a5077161aeba1d12f02944707b21581b2f7 GIT binary patch literal 16896 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 izF0CE{{zz*6^j92|LHBJV3B1?{{I1vYc3lA literal 0 HcmV?d00001 diff --git a/OpenMcdf.Ole.Tests/winUnicodeDictionary.doc b/OpenMcdf.Ole.Tests/winUnicodeDictionary.doc new file mode 100644 index 0000000000000000000000000000000000000000..2ba5153c78913c14c548d70d188ceae510d70845 GIT binary patch literal 26624 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 literal 0 HcmV?d00001 diff --git a/OpenMcdf.Ole.Tests/wstr_presets.doc b/OpenMcdf.Ole.Tests/wstr_presets.doc new file mode 100644 index 0000000000000000000000000000000000000000..884da6af5fb42bd42f8f7b62213d15d1c4008337 GIT binary patch literal 27136 zcmeHQ2|Sg{`=4{{yCezK2}O%7g}MnvS+azbRtE=1oMTI?QqjWgrp;|pN!k@60>z%)B#4+0{-} z+YV|yAYyJfks$9|NkRl_ zr?C?4$Za*>nNAcK?%xjl>_B<3fvp9fl6R6Ynh@>2

J_Lj4| z+nlX}66_d-j%rtFB3!6^RD3GnfKWC8HwBLE4;__mwAP=8TVwzCSIQ2hiK;IwhX8~W z&J?H0M};X)BKqJ9x2{Yeo9W+r@|d^aXVC)!kG$p#3{X0{fhH1#fzu^zY0_J z)ls=Sl2hgVR^E|5?3?AF10AeJ$WUnYQbY}|a`5h;-9H}zw$eYpjC2YAMg-tFWr)Ul z?;8F_JGAP51On0;A#S!X%mjW%uM-SVMRni&k0>2oh<_mhI6`F%BxWfgjG+1uy ziDF^J=u0H713&zuY&hfb1 z=d%LrCIB@6$pW65Kt4e8fml#Y?#>d#186MJG)IPHxTBmb4=5Ta1_+YiZWh0nEll8w zu*XRF83Oi~xe-2zBH@Hh!XORq#8C@WXE2C*<^^aGBb_yb`q;oxr$`^vqPVjscC1$| z+lW0;6n)cFg(ujaa7Ym7o&nlpprjt)j{*u7UL!~d$VNd4co2)ulW@uFmP5c5ySG{} zl~yF)ki#D|a3J-k<<%iw-$FATbX%G*J#5DE;~{Ym1nr4qBO&4X54`5Dw;J1jY3x@43fKee`f75k33nU7(G@0(hYOR9a#A= zU0HL@Ywu^{riLU2#y#Ac_8Fn6R(doINq)y6V}g0Xg=jGNJRIn%_TC>i@8AzB+gK;;t1}B+XAx_WRxD zxycjhNfj#lkBoj+J$b>oUd={#J*OM5iGF`GKgC$n_{XD%*^f_W*)VY989WM~K(*uc zt|w;zA`6Jc1~Dy)6Bcb^jMs#fR{kv5k@9>iLoUa;t5V&<;ivXf>- zEZIKyZtk=b9@n-HyJDuj!|{meIyIGLmF_1z4~z)Bc2V`Zv%}p%{`w1ct%{sh-gEty zZdDdzZv3v{S#IffVCC+MEr$wCOSZTdEXW@4$U%~4xpoY<#(&#xlZRd>Q+9Lq-t1A9 zd#v$xbGtV>eRitGVz|L1ARVBX5KcJ9q|Mcp&0`01qOfr&mbl6nvQ%v!#BH0IQfV2G zZ|LCv)8zyCZ^_6sExY3M>s#-ZKYF;>vh=?CtxYaUz5~)^l#)1CjF%l1%p0&vd-okj zo$~|29u#+Z{A`xy#ltH)-*>tYJvL77R!U-4?k}v{x&3eT`fb23Q;+M1S|^Vl|MW(E z-)e_n`}dJ&TD4#J)ZDD}VQPIW(+$S$587 z&(-HAOkHhJk(4!DU#;?Z%wjh zJN8SHT>moR@X5Zb?&Yqizn`B}KF;2Mkzbr{dF0*Xwa(=~re>-XPMG?*uah6I#Nqoc zCz2xisy4_zEehiv_n9;$$;@@w+A7Tp_q0~-aWC^&^Tr~o+FCk$`RX}mg8kE-ItM2f zNXyJvk>XX!VRrYw{WjkH%*rJ-r(UTRdKTE<-M3-u(Zi85!tp1av;w1b+dzAnBd)~=8c2`NxZ;N;Oqz=3?YC+b$i`-P(w~Wx8R!!7uFxDb8gT&Qy$uF-jYQjh8Zr0G+)~rCFN?~ zf0&^{lmaJQlib5~E~;2+_@a82zTs^}!O(&o-M*{2e7x5c1*d6c-nl1LycD~cZLfdc zSf9Pc#-UhcOLv=wXAKVuAIjKF98tPAJT2kTIFr-OwO5OKZnxPo|MjbDU2o0uEo%9r z(BSmDce4kpUJve5nryQ5-P_uW$=So3oAXC^5x6cK&1py}vd`F5BU|@cQ{CJrvbTX= zjN9KjJNUI#VFwrjggA-1~=o_iX8-+^5S1DX3bTce?YV$KK8IIyY*5yJWWA zV`aGF|T&Nn81vgDh(?BkPWt*-4P`?_(( zlPMSD#z&oOnRju@+N;4vhY#J6=ZvpcI?~s|DC$Jc$R1ur(xI0wC~-Fi$~D=SEwwvY znx^a&>F=yJtK@m!Vg)IS=_ysu_4a1iC3uD8{JN!&+NJMf498yTty5bP(K~#_(mqov z1K3_YHN&h^Ce*z;qn!Qp!Mn*GDQ5YuA0IKNUdOAy_p?!vLf2=y-5$gT4!=I< zYSV6B+S=lz<8tv8djzY7*KGFBRXdv6r%C$f((25C`9;jwxy+WldLr}nTl=9u zWu~PKup1qoeQPpr&V^#`UG2gR8a*DWpD>he5FE{$lW8j_RXi_iwbTkFVi@doXC~!cWjJBi`0;tE#alUT79w} zoZ0o3yG$~%+0kK9inXCjpFiAs`CNT#?6R7ZFvfn}xpjNG%(YjR(|)dXY;S$6ii7I& zof`u=XR6$awl;0ylo{T1bsKU&P0O?Pq=n4;XQjn`%ncviX5T2Qd23?7zhYe7oI}Iz z&%K=Vbh+=QTNe&7*RMOW$S3t}cHgr@j!v9(@bRFjyvJu3c6~B3@I3+eha>bhNhYK>Dd~XD0tvNFBl<%~N zU6TaX>@cHB-*<6t0bQ?bxLkVieDa{!Aa?QX*syJT3Jw`~sV^yNv@5bIns>e5f*IA@ z=T<#6I(C1nX>V840?XbDxBafOepr0XQJpK-SKyZY&&L}|*HX3~ff#LgNgIg0hFixT z!gpJnm$7Ip;wpdER6U`7(M(xB|3;qbsy@FgE6chmkx(;O$-+i|Y;B#=fdR6{OWCJ3 zaPxoMe6e%Dz1KMtA#8y9@bcj`cI*(qC?3%sa1t(qDD%Ez&L3V`Iyq zW-G1b!6rR5ro10(7hRbsWtdS^Ql+kkU@@K<|Ht>sU5+90u)O4*qO~QeRxDN3~@KMJm zxlc>;Cr!e`MG8hlxT#l)Oo6*kmB-L98yE<&VmVRKTt3fQ*UZ>dm&M@)@B_KLU~AoR z-lL4HbXn0cY+fKcjL+j(>(1sx>)H%gk{`w%8W0xc%8p=x0$%h`wzY0ZOiaX36O-rw z7%H-(jrkEA9>fLlqr%xS5R3{o35;UT1jXTDCId}PElk4MT%In=KiJG#H!Q|XmlZP$ ze1X%!=N~)}Wdl(LzQF0=V+RDloCH#cJd_0DTO}XTm{SsSD$O8DGKi84rX+(Yi3KIG z&}D^$ae33>j*#iHg7{&MtpduYYcd?sgBrxC9vqyJZ9Sv{^C>)PBZZM7KY|X2Wdz zNR`M6a6Ttg3bSezA|Wt^unLhB7z*Wb0#qRGm_%Nfk3b$QIHn%~TumfrfE;hp3kuZ( zyr;o{D!GhiNDEwLiKGNHLt-Pr5Zdk}zzo7@;OLhDqI?!2AC~kHios#pssIU6qzF<8 z6@uFtYld|q%dFMN50ll2ox28k77X)s*x6PyuMdfcHXxaEElI4EEn%433FpB39bL&b zwkLTW=}82RUSzh<1ag0rFFEBELUOIciQ%AVGAbyRtWlmv#n+!kveGs=*0u*@+Xh)-t16{QF$?iXJStL{ zK?3qH$%B^t#Fi@YR)hxJNMU*|*uuPo*r}z!A{0|n3hq=I@(B~QbHRLA!d8nc;tJsy zSV$p67pl)p_IphtD1*wtMPFF5+{YY^gnq1{R)M%J>7A{o792GkT5}z7c`jE?}q z28PWFd+_gp@P(2Ngx%|5AZ%b~fNA_>ayWUwM|Rp9EtaYb1N zIF<|_4ID#Y-iVnT|L7P_6nH<#+;FfMW*o?m3I8AyPlx5iM+fz20=aSnqWIDLpcs~W zP!KnO!y3Ic*xXaJBA z5aw?N!u1IBBbkf*;HBL+Ab^|l@LVB_I0(-`M!|-=Z*dw#ib0vfHY6>Ft*Ld-2e47X zfanro*IW3@*ticPzBL(~&&2I=?6%3i$uCcsAM9f}z9uv7QK7aPnzcFG`89dP(+p#nJ3;1Js-yvw=q&~azZ!3=#*vEbg?;V{`=@%}2 zFkW>34A}UI+fpNlJ8XIj{X)*qqt&4IY_;5a{X9kcl5cy;+Sfrz|B8JoFIEHgpY8Sk z_?%$>kMXqo&qRO$wJQNHc)UCDz8l}c?e3Ff4Y4$Wvl!+qdw#%-a5!Hf93r@S;T}2= z37;+W8&mPdR^-i)pCUn@xcjs35AE$g#Q&>+;}2}N%Ybm4k^+Qn6~8NBdp!n(W0G?~ zICiN4!m*102*)q)fKZ1lD8X@zDsb!$G=bwdh6Nn^6hq+HukHsf?ywJQyD#ydwg<5% zl+PMy4s7_J4ZV0I^l*{Few`2dHF?n21;R$(5b%XUe;)~bKgz@4cM)d8H3H&;;e9j{ z-VGtb6kJFZ0lH!#9^X^J;F|&OssP9r0lpZ}5iC4hfV!iFaA6q`cl_;y0I-L@#1IVn QxS(;mFa>@2|3=_{03O{PXaE2J literal 0 HcmV?d00001 diff --git a/OpenMcdf.Tests/OpenMcdf.Tests.csproj b/OpenMcdf.Tests/OpenMcdf.Tests.csproj index 2736a5b8..dcba798f 100644 --- a/OpenMcdf.Tests/OpenMcdf.Tests.csproj +++ b/OpenMcdf.Tests/OpenMcdf.Tests.csproj @@ -3,7 +3,7 @@ net48;net8.0-windows Exe - 11.0 + 12.0 enable enable diff --git a/OpenMcdf.sln b/OpenMcdf.sln index 0e7f8a06..d8639c4d 100644 --- a/OpenMcdf.sln +++ b/OpenMcdf.sln @@ -24,6 +24,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenMcdf.Ole", "OpenMcdf.Ol EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StructuredStorageExplorer", "StructuredStorageExplorer\StructuredStorageExplorer.csproj", "{D5DDCC19-80C4-40D2-AEBF-2DA1CCB1D543}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenMcdf.Ole.Tests", "OpenMcdf.Ole.Tests\OpenMcdf.Ole.Tests.csproj", "{34F153C4-3EFA-4D6E-B860-AEE300CCCF98}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -58,6 +60,10 @@ Global {D5DDCC19-80C4-40D2-AEBF-2DA1CCB1D543}.Debug|Any CPU.Build.0 = Debug|Any CPU {D5DDCC19-80C4-40D2-AEBF-2DA1CCB1D543}.Release|Any CPU.ActiveCfg = Release|Any CPU {D5DDCC19-80C4-40D2-AEBF-2DA1CCB1D543}.Release|Any CPU.Build.0 = Release|Any CPU + {34F153C4-3EFA-4D6E-B860-AEE300CCCF98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {34F153C4-3EFA-4D6E-B860-AEE300CCCF98}.Debug|Any CPU.Build.0 = Debug|Any CPU + {34F153C4-3EFA-4D6E-B860-AEE300CCCF98}.Release|Any CPU.ActiveCfg = Release|Any CPU + {34F153C4-3EFA-4D6E-B860-AEE300CCCF98}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/OpenMcdf/RootStorage.cs b/OpenMcdf/RootStorage.cs index 86e2c3fd..e6a45cd4 100644 --- a/OpenMcdf/RootStorage.cs +++ b/OpenMcdf/RootStorage.cs @@ -58,6 +58,8 @@ public static RootStorage Create(Stream stream, Version version = Version.V3, St return new RootStorage(rootContextSite, flags); } + public static RootStorage CreateInMemory(Version version = Version.V3) => Create(new MemoryStream(), version); + public static RootStorage Open(string fileName, FileMode mode, StorageModeFlags flags = StorageModeFlags.None) { ThrowIfLeaveOpen(flags); @@ -91,7 +93,7 @@ public static RootStorage Open(Stream stream, StorageModeFlags flags = StorageMo this.storageModeFlags = storageModeFlags; } - public void Dispose() => Context?.Dispose(); + public void Dispose() => Context.Dispose(); public void Flush(bool consolidate = false) {