summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolan.mcnamara@collabora.com>2024-11-08 16:51:47 +0000
committerMichael Stahl <michael.stahl@allotropia.de>2024-11-11 11:26:39 +0100
commitf761d098e9a0960554aa4fc02f84a711b50a1cff (patch)
tree9573d33b16629914067907f6f177c490be727445 /vcl
parent45c3164e569ff06160d64f085a19618ed70c13ee (diff)
be conservative on allowed temp font names
Change-Id: Iefdc1a8c9b4c7e8c08c84f747f8287ac3c419839 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176236 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> Tested-by: Jenkins
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/gdi/embeddedfontshelper.cxx16
1 files changed, 12 insertions, 4 deletions
diff --git a/vcl/source/gdi/embeddedfontshelper.cxx b/vcl/source/gdi/embeddedfontshelper.cxx
index a6a2b61676f7..8053d80bc455 100644
--- a/vcl/source/gdi/embeddedfontshelper.cxx
+++ b/vcl/source/gdi/embeddedfontshelper.cxx
@@ -19,6 +19,7 @@
#include <vcl/svapp.hxx>
#include <vcl/embeddedfontshelper.hxx>
#include <com/sun/star/io/XInputStream.hpp>
+#include <comphelper/storagehelper.hxx>
#include <font/PhysicalFontFaceCollection.hxx>
#include <font/PhysicalFontCollection.hxx>
@@ -223,10 +224,6 @@ void EmbeddedFontsHelper::activateFonts()
OUString EmbeddedFontsHelper::fileUrlForTemporaryFont( const OUString& fontName, std::u16string_view extra )
{
- OUString path = u"${$BRAND_BASE_DIR/" LIBO_ETC_FOLDER "/" SAL_CONFIGFILE( "bootstrap") "::UserInstallation}"_ustr;
- rtl::Bootstrap::expandMacros( path );
- path += "/user/temp/embeddedfonts/fromdocs/";
- osl::Directory::createPath( path );
OUString filename = fontName;
static int uniqueCounter = 0;
if( extra == u"?" )
@@ -234,6 +231,17 @@ OUString EmbeddedFontsHelper::fileUrlForTemporaryFont( const OUString& fontName,
else
filename += extra;
filename += ".ttf"; // TODO is it always ttf?
+
+ if (!::comphelper::OStorageHelper::IsValidZipEntryFileName(filename, false))
+ {
+ SAL_WARN( "vcl.fonts", "Cannot use filename: " << filename << " for temporary font");
+ filename = "font" + OUString::number(uniqueCounter++) + ".ttf";
+ }
+
+ OUString path = u"${$BRAND_BASE_DIR/" LIBO_ETC_FOLDER "/" SAL_CONFIGFILE( "bootstrap") "::UserInstallation}"_ustr;
+ rtl::Bootstrap::expandMacros( path );
+ path += "/user/temp/embeddedfonts/fromdocs/";
+ osl::Directory::createPath( path );
return path + filename;
}