[Libreoffice-commits] core.git: bin/oss-fuzz-build.sh vcl/workben

Caolán McNamara caolanm at redhat.com
Sun Feb 25 15:46:26 UTC 2018


 bin/oss-fuzz-build.sh         |   26 ++++++++++++++++++--------
 vcl/workben/commonfuzzer.hxx  |   19 ++++++++++++++-----
 vcl/workben/sftfuzzer.options |    2 ++
 3 files changed, 34 insertions(+), 13 deletions(-)

New commits:
commit 1724d7db282ac997dc6d8e9d1e63486e141388f5
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Feb 25 15:32:50 2018 +0000

    oss-fuzz: issue 1188, per-fuzzer config
    
    instead of copying the whole bunch around, now the scheme is to copy
    each individual fuzzer and matching config around, so duplicate the
    previously shared config for each one an
    
    Change-Id: I479ea13abfab382b6aee23bc04d5f7e535b489c9

diff --git a/bin/oss-fuzz-build.sh b/bin/oss-fuzz-build.sh
index 99e90c937bb4..08330daffe2b 100755
--- a/bin/oss-fuzz-build.sh
+++ b/bin/oss-fuzz-build.sh
@@ -20,15 +20,25 @@ export ASAN_OPTIONS="detect_leaks=0"
 
 make fuzzers
 
-#some minimal fonts required
-cp $SRC/libreoffice/extras/source/truetype/symbol/opens___.ttf instdir/share/fonts/truetype/Liberation* $OUT
-#minimal runtime requirements
-rm -rf $OUT/services $OUT/types $OUT/*rdb
-mkdir $OUT/services
 pushd instdir/program
-cp -r *fuzzer unorc fundamentalrc types.rdb types $OUT
-head -c -14 services.rdb  > $OUT/services.rdb
-tail -c +85 ./services/services.rdb >> $OUT/services.rdb
+head -c -14 services.rdb  > templateservices.rdb
+tail -c +85 ./services/services.rdb >> templateservices.rdb
+for a in *fuzzer; do
+    #some minimal fonts required
+    cp $a $OUT
+    mkdir -p $OUT/$a.fonts
+    cp $SRC/libreoffice/extras/source/truetype/symbol/opens___.ttf ../share/fonts/truetype/Liberation* $OUT/$a.fonts
+    #minimal runtime requirements
+    cp templateservices.rdb $OUT/$a.services.rdb
+    cp types.rdb $OUT/$a.types.rdb
+    cp types/offapi.rdb $OUT/$a.moretypes.rdb
+    cat > $OUT/$a.unorc << EOF
+[Bootstrap]
+URE_INTERNAL_LIB_DIR=\${ORIGIN}
+UNO_TYPES=\${ORIGIN}/$a.types.rdb \${ORIGIN}/$a.moretypes.rdb
+UNO_SERVICES=\${ORIGIN}/$a.services.rdb
+EOF
+done
 popd
 
 #starting corpuses
diff --git a/vcl/workben/commonfuzzer.hxx b/vcl/workben/commonfuzzer.hxx
index cc4830fa5990..05d35a4e1532 100644
--- a/vcl/workben/commonfuzzer.hxx
+++ b/vcl/workben/commonfuzzer.hxx
@@ -49,17 +49,25 @@ namespace
         return uri;
     }
 
+    OUString getExecutableName()
+    {
+        OUString uri;
+        if (osl_getExecutableFile(&uri.pData) != osl_Process_E_None) {
+            abort();
+        }
+        return uri.copy(uri.lastIndexOf('/') + 1);
+    }
+
     void setFontConfigConf(const OUString &execdir)
     {
         osl::File aFontConfig("file:///tmp/wmffuzzerfonts.conf");
         if (aFontConfig.open(osl_File_OpenFlag_Create | osl_File_OpenFlag_Write) == osl::File::E_None)
         {
-            OUString path;
-            osl::FileBase::getSystemPathFromFileURL(execdir, path);
-            OString sFontDir = OUStringToOString(path, osl_getThreadTextEncoding());
+            OUString sExecDir;
+            osl::FileBase::getSystemPathFromFileURL(execdir, sExecDir);
 
             rtl::OStringBuffer aBuffer("<?xml version=\"1.0\"?>\n<fontconfig><dir>");
-            aBuffer.append(sFontDir);
+            aBuffer.append(OUStringToOString(sExecDir + getExecutableName() + ".fonts", osl_getThreadTextEncoding());
             aBuffer.append("</dir><cachedir>/tmp/cache/fontconfig</cachedir></fontconfig>");
             rtl::OString aConf = aBuffer.makeStringAndClear();
             sal_uInt64 aBytesWritten;
@@ -104,7 +112,8 @@ void CommonInitialize(int *argc, char ***argv)
 
     tools::extendApplicationEnvironment();
 
-    Reference< XComponentContext > xContext = defaultBootstrap_InitialComponentContext();
+    Reference< XComponentContext > xContext =
+        defaultBootstrap_InitialComponentContext(sExecDir + getExecutableName() + ".unorc");
     Reference< XMultiServiceFactory > xServiceManager( xContext->getServiceManager(), UNO_QUERY );
     if( !xServiceManager.is() )
         Application::Abort( "Failed to bootstrap" );
diff --git a/vcl/workben/sftfuzzer.options b/vcl/workben/sftfuzzer.options
new file mode 100644
index 000000000000..678d526b1ea9
--- /dev/null
+++ b/vcl/workben/sftfuzzer.options
@@ -0,0 +1,2 @@
+[libfuzzer]
+max_len = 65536


More information about the Libreoffice-commits mailing list