be conservative on allowed temp font names

Change-Id: Iefdc1a8c9b4c7e8c08c84f747f8287ac3c419839
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176286
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
This commit is contained in:
Caolán McNamara 2024-11-08 16:51:47 +00:00
parent 12e5082537
commit 383067b416

View file

@ -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;
}