Kaydet (Commit) a4923f1d authored tarafından Miklos Vajna's avatar Miklos Vajna

CppunitTest_vcl_pdfexport: fix use after free

Just do the minimal fixing, a follow-up commit should clean up the
copy&paste coding that happened here in previous commits.

Change-Id: I44306e2fee57d55997414e62120c7e5037f306fb
Reviewed-on: https://gerrit.libreoffice.org/60757Tested-by: 's avatarMichael Stahl <Michael.Stahl@cib.de>
Tested-by: Jenkins
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst a1400603
...@@ -38,6 +38,8 @@ class PdfExportTest : public test::BootstrapFixture, public unotest::MacrosTest ...@@ -38,6 +38,8 @@ class PdfExportTest : public test::BootstrapFixture, public unotest::MacrosTest
uno::Reference<lang::XComponent> mxComponent; uno::Reference<lang::XComponent> mxComponent;
FPDF_PAGE mpPdfPage = nullptr; FPDF_PAGE mpPdfPage = nullptr;
FPDF_DOCUMENT mpPdfDocument = nullptr; FPDF_DOCUMENT mpPdfDocument = nullptr;
/// Underlying memory of mpPdfDocument.
SvMemoryStream maPdfMemory;
utl::TempFile maTempFile; utl::TempFile maTempFile;
SvMemoryStream maMemory; SvMemoryStream maMemory;
// Export the document as PDF, then parse it with PDFium. // Export the document as PDF, then parse it with PDFium.
...@@ -287,9 +289,8 @@ void PdfExportTest::testTdf105461() ...@@ -287,9 +289,8 @@ void PdfExportTest::testTdf105461()
// Parse the export result with pdfium. // Parse the export result with pdfium.
SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ); SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ);
SvMemoryStream aMemory; maPdfMemory.WriteStream(aFile);
aMemory.WriteStream(aFile); mpPdfDocument = FPDF_LoadMemDocument(maPdfMemory.GetData(), maPdfMemory.GetSize(), /*password=*/nullptr);
mpPdfDocument = FPDF_LoadMemDocument(aMemory.GetData(), aMemory.GetSize(), /*password=*/nullptr);
CPPUNIT_ASSERT(mpPdfDocument); CPPUNIT_ASSERT(mpPdfDocument);
// The document has one page. // The document has one page.
...@@ -339,9 +340,8 @@ void PdfExportTest::testTdf107868() ...@@ -339,9 +340,8 @@ void PdfExportTest::testTdf107868()
// Parse the export result with pdfium. // Parse the export result with pdfium.
SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ); SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ);
SvMemoryStream aMemory; maPdfMemory.WriteStream(aFile);
aMemory.WriteStream(aFile); mpPdfDocument = FPDF_LoadMemDocument(maPdfMemory.GetData(), maPdfMemory.GetSize(), /*password=*/nullptr);
mpPdfDocument = FPDF_LoadMemDocument(aMemory.GetData(), aMemory.GetSize(), /*password=*/nullptr);
if (!mpPdfDocument) if (!mpPdfDocument)
// Printing to PDF failed in a non-interesting way, e.g. CUPS is not // Printing to PDF failed in a non-interesting way, e.g. CUPS is not
// running, there is no printer defined, etc. // running, there is no printer defined, etc.
...@@ -769,9 +769,8 @@ void PdfExportTest::testTdf108963() ...@@ -769,9 +769,8 @@ void PdfExportTest::testTdf108963()
// Parse the export result with pdfium. // Parse the export result with pdfium.
SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ); SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ);
SvMemoryStream aMemory; maPdfMemory.WriteStream(aFile);
aMemory.WriteStream(aFile); mpPdfDocument = FPDF_LoadMemDocument(maPdfMemory.GetData(), maPdfMemory.GetSize(), /*password=*/nullptr);
mpPdfDocument = FPDF_LoadMemDocument(aMemory.GetData(), aMemory.GetSize(), /*password=*/nullptr);
CPPUNIT_ASSERT(mpPdfDocument); CPPUNIT_ASSERT(mpPdfDocument);
// The document has one page. // The document has one page.
...@@ -973,9 +972,8 @@ void PdfExportTest::testTdf115117_1a() ...@@ -973,9 +972,8 @@ void PdfExportTest::testTdf115117_1a()
// Parse the export result with pdfium. // Parse the export result with pdfium.
SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ); SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ);
SvMemoryStream aMemory; maPdfMemory.WriteStream(aFile);
aMemory.WriteStream(aFile); mpPdfDocument = FPDF_LoadMemDocument(maPdfMemory.GetData(), maPdfMemory.GetSize(), /*password=*/nullptr);
mpPdfDocument = FPDF_LoadMemDocument(aMemory.GetData(), aMemory.GetSize(), /*password=*/nullptr);
CPPUNIT_ASSERT(mpPdfDocument); CPPUNIT_ASSERT(mpPdfDocument);
// The document has one page. // The document has one page.
...@@ -1016,9 +1014,8 @@ void PdfExportTest::testTdf115117_2a() ...@@ -1016,9 +1014,8 @@ void PdfExportTest::testTdf115117_2a()
// Parse the export result with pdfium. // Parse the export result with pdfium.
SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ); SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ);
SvMemoryStream aMemory; maPdfMemory.WriteStream(aFile);
aMemory.WriteStream(aFile); mpPdfDocument = FPDF_LoadMemDocument(maPdfMemory.GetData(), maPdfMemory.GetSize(), /*password=*/nullptr);
mpPdfDocument = FPDF_LoadMemDocument(aMemory.GetData(), aMemory.GetSize(), /*password=*/nullptr);
CPPUNIT_ASSERT(mpPdfDocument); CPPUNIT_ASSERT(mpPdfDocument);
// The document has one page. // The document has one page.
...@@ -1327,10 +1324,9 @@ void PdfExportTest::testTdf105954() ...@@ -1327,10 +1324,9 @@ void PdfExportTest::testTdf105954()
// Parse the export result with pdfium. // Parse the export result with pdfium.
SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ); SvFileStream aFile(maTempFile.GetURL(), StreamMode::READ);
SvMemoryStream aMemory; maPdfMemory.WriteStream(aFile);
aMemory.WriteStream(aFile);
mpPdfDocument mpPdfDocument
= FPDF_LoadMemDocument(aMemory.GetData(), aMemory.GetSize(), /*password=*/nullptr); = FPDF_LoadMemDocument(maPdfMemory.GetData(), maPdfMemory.GetSize(), /*password=*/nullptr);
CPPUNIT_ASSERT(mpPdfDocument); CPPUNIT_ASSERT(mpPdfDocument);
// The document has one page. // The document has one page.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment