diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-09-22 12:32:28 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2017-09-22 18:09:44 +0200 |
commit | 893c08b59abf31ee0ae50c4ac030b006c43c0976 (patch) | |
tree | 750ab03b55ec72c55dbc1640d5d5d4222e04e88b /vcl | |
parent | a395698d3df12d1deaec25b31ae02e019a281867 (diff) |
move TestImportOLE2 where it can be used by fftester
Change-Id: I7b41d9ec673cfb96f51b5008540df63fe78a7581
Reviewed-on: https://gerrit.libreoffice.org/42639
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/workben/fftester.cxx | 15 | ||||
-rw-r--r-- | vcl/workben/olefuzzer.cxx | 54 |
2 files changed, 16 insertions, 53 deletions
diff --git a/vcl/workben/fftester.cxx b/vcl/workben/fftester.cxx index 4b9d6979ae54..4e806216d956 100644 --- a/vcl/workben/fftester.cxx +++ b/vcl/workben/fftester.cxx @@ -532,7 +532,20 @@ try_again: SvFileStream aFileStream(out, StreamMode::READ); ret = (int) (*pfnImport)(aFileStream); } - + else if (strcmp(argv[2], "ole") == 0) + { + static FFilterCall pfnImport(nullptr); + if (!pfnImport) + { + osl::Module aLibrary; + aLibrary.loadRelative(&thisModule, "libsotlo.so", SAL_LOADMODULE_LAZY); + pfnImport = reinterpret_cast<FFilterCall>( + aLibrary.getFunctionSymbol("TestImportOLE2")); + aLibrary.release(); + } + SvFileStream aFileStream(out, StreamMode::READ); + ret = (int) (*pfnImport)(aFileStream); + } #endif } diff --git a/vcl/workben/olefuzzer.cxx b/vcl/workben/olefuzzer.cxx index f9a717122e59..6554b723f955 100644 --- a/vcl/workben/olefuzzer.cxx +++ b/vcl/workben/olefuzzer.cxx @@ -7,60 +7,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include <vector> - -#include <sot/storage.hxx> - #include <tools/stream.hxx> - #include "commonfuzzer.hxx" -namespace -{ - -void traverse(const tools::SvRef<SotStorage>& rStorage, std::vector<unsigned char>& rBuf) -{ - SvStorageInfoList infos; - - rStorage->FillInfoList(&infos); - - for (const auto& info: infos) - { - if (info.IsStream()) - { - // try to open and read all content - tools::SvRef<SotStorageStream> xStream(rStorage->OpenSotStream(info.GetName(), StreamMode::STD_READ)); - const size_t nSize = xStream->GetSize(); - const size_t nRead = xStream->ReadBytes(rBuf.data(), nSize); - (void) nRead; - } - else if (info.IsStorage()) - { - tools::SvRef<SotStorage> xStorage(rStorage->OpenSotStorage(info.GetName(), StreamMode::STD_READ)); - - // continue with children - traverse(xStorage, rBuf); - } - else - { - } - } -} - -void TestImportOLE2(SvStream &rStream, size_t nSize) -{ - try - { - tools::SvRef<SotStorage> xRootStorage(new SotStorage(&rStream, false)); - std::vector<unsigned char> aTmpBuf(nSize); - traverse(xRootStorage, aTmpBuf); - } - catch (...) - { - } -} - -} +extern "C" bool TestImportOLE2(SvStream &rStream); extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { @@ -71,7 +21,7 @@ extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { SvMemoryStream aStream(const_cast<uint8_t*>(data), size, StreamMode::READ); - TestImportOLE2(aStream, size); + TestImportOLE2(aStream); return 0; } |