vcl/workben/wmffuzzer.cxx | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-)
New commits: commit 79c4f0a2facfb25f5a532a32fdcc40d3027d96b5 Author: Caolán McNamara <caol...@redhat.com> Date: Sat Dec 10 21:39:50 2016 +0000 oss-fuzz: build fonts.conf replacement on the fly based on runtime location Change-Id: Ic5a1dbd098d251588ff528cf2a63f2189cb783af diff --git a/vcl/workben/wmffuzzer.cxx b/vcl/workben/wmffuzzer.cxx index e84ab5d..b9b44b6 100644 --- a/vcl/workben/wmffuzzer.cxx +++ b/vcl/workben/wmffuzzer.cxx @@ -16,6 +16,7 @@ #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/uno/XComponentContext.hpp> #include <unotools/configmgr.hxx> +#include <rtl/strbuf.hxx> #include <osl/file.hxx> #include <vcl/svapp.hxx> #include <vcl/wmf.hxx> @@ -30,18 +31,29 @@ namespace { void setFontConfigConf() { - OUString uri; - if (osl_getExecutableFile(&uri.pData) != osl_Process_E_None) { - abort(); - } - sal_Int32 lastDirSeperatorPos = uri.lastIndexOf('/'); - if (lastDirSeperatorPos >= 0) { - uri = uri.copy(0, lastDirSeperatorPos + 1); + osl::File aFontConfig("file::///tmp/wmffuzzerfonts.conf"); + if (aFontConfig.open(osl_File_OpenFlag_Create | osl_File_OpenFlag_Write) == osl::File::E_None) + { + OUString uri; + if (osl_getExecutableFile(&uri.pData) != osl_Process_E_None) { + abort(); + } + sal_Int32 lastDirSeperatorPos = uri.lastIndexOf('/'); + if (lastDirSeperatorPos >= 0) { + uri = uri.copy(0, lastDirSeperatorPos + 1); + } + OUString path; + osl::FileBase::getSystemPathFromFileURL(uri, path); + OString sFontDir = OUStringToOString(path, osl_getThreadTextEncoding()) + "../share/fonts/truetype"; + + rtl::OStringBuffer aBuffer("<?xml version=\"1.0\"?>\n<fontconfig><dir>"); + aBuffer.append(sFontDir); + aBuffer.append("</dir><cachedir>/tmp/cache/fontconfig</cachedir></fontconfig>"); + rtl::OString aConf = aBuffer.makeStringAndClear(); + sal_uInt64 aBytesWritten; + aFontConfig.write(aConf.getStr(), aConf.getLength(), aBytesWritten); } - OUString path; - osl::FileBase::getSystemPathFromFileURL(uri, path); - OString sFontConf = OUStringToOString(path, osl_getThreadTextEncoding()) + "fonts.conf"; - setenv("FONTCONFIG_FILE", sFontConf.getStr(), 0); + setenv("FONTCONFIG_FILE", "/tmp/wmffuzzerfonts.conf", 0); } }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits