tdf#168843: Sanitize font size read from PPT

Add validation checks to SvxFontHeightItem, which is used when reading
font size value from a PPT. In LO minimum accepted value for font size
is 2pt.

Change-Id: Ia027800bc52b797f6f0bf5b28e74ba38ba558d5c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192139
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit f4c3c126d9f43f0e8b066d1eda8669cbec6495fd)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193076
Reviewed-by: Michael Stahl <michael.stahl@collabora.com>
Tested-by: Jenkins
This commit is contained in:
Karthik
2025-10-29 15:40:59 +01:00
committed by Michael Stahl
parent 17410704f7
commit c995322f64
2 changed files with 5 additions and 1 deletions
+3 -1
View File
@@ -5591,7 +5591,9 @@ void PPTPortionObj::ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, T
}
if ( GetAttrib( PPT_CharAttr_FontHeight, nVal, nDestinationInstance ) ) // Font size in Point
{
sal_uInt32 nHeight = rManager.ScalePoint( nVal );
constexpr sal_uInt32 MIN_FONT_HEIGHT_PT = 2;
sal_uInt32 nHeight = rManager.ScalePoint(std::max(nVal, MIN_FONT_HEIGHT_PT));
rSet.Put( SvxFontHeightItem( nHeight, 100, EE_CHAR_FONTHEIGHT ) );
rSet.Put( SvxFontHeightItem( nHeight, 100, EE_CHAR_FONTHEIGHT_CJK ) );
rSet.Put( SvxFontHeightItem( nHeight, 100, EE_CHAR_FONTHEIGHT_CTL ) );
+2
View File
@@ -2681,6 +2681,8 @@ void DrawingML::WriteRunProperties( const Reference< XPropertySet >& rRun, bool
}
}
assert(nSize >= 200 && "Minimum accepted value for fontsize(ST_TextFontSize) is 200");
mpFS->startElementNS( XML_a, nElement,
XML_lang, sax_fastparser::UseIf(usLanguage, !usLanguage.isEmpty()),
XML_sz, OString::number(nSize),