vcl/source/pdf/pdfwriter_impl.cxx |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

New commits:
commit 77c68786670371e5302fdbf6bd7a9f07ddf79845
Author:     Stephan Bergmann <[email protected]>
AuthorDate: Sun Oct 5 22:18:16 2025 +0200
Commit:     Stephan Bergmann <[email protected]>
CommitDate: Mon Oct 6 08:26:12 2025 +0200

    Avoid UBSan signed-integer-overflow
    
    ...by reverting the part of acf75a9b261d4ac2211abffd5a1ba1656d08e46b "Drop 
some
    unnecessary explicit casts" that started to make CppunitTest_vcl_pdfexport2 
fail
    with
    
    > /workdir/UnpackedTarball/boost/boost/rational.hpp:604:22: runtime error: 
signed integer overflow: 350932797 * 10 cannot be represented in type 'int'
    >     #0 0x7f56315d94f1 in 
boost::rational<int>::operator/=(boost::rational<int> const&) 
/workdir/UnpackedTarball/boost/boost/rational.hpp:604:22
    >     #1 0x7f56315d12dd in Fraction::operator/=(Fraction const&) 
/tools/source/generic/fract.cxx:239:7
    >     #2 0x7f56315d40e8 in operator/(Fraction const&, Fraction const&) 
/tools/source/generic/fract.cxx:335:10
    >     #3 0x7f5626bafc3f in vcl::PDFWriterImpl::drawLayout(SalLayout&, 
rtl::OUString const&, bool) /vcl/source/pdf/pdfwriter_impl.cxx:6767:69
    >     #4 0x7f5626bcc194 in vcl::PDFWriterImpl::drawTextArray(Point const&, 
rtl::OUString const&, std::span<double const, 18446744073709551615ul>, 
std::span<unsigned char const, 18446744073709551615ul>, int, int, int, int) 
/vcl/source/pdf/pdfwriter_impl.cxx:7269:9
    >     #5 0x7f5626a30fdd in vcl::PDFWriter::DrawTextArray(Point const&, 
rtl::OUString const&, std::span<double const, 18446744073709551615ul>, 
std::span<unsigned char const, 18446744073709551615ul>, int, int, int, int) 
/vcl/source/pdf/pdfwriter.cxx:87:22
    >     #6 0x7f5626a58a6f in vcl::PDFWriterImpl::playMetafile(GDIMetaFile 
const&, vcl::PDFExtOutDevData*, vcl::PDFWriter::PlayMetafileContext const&, 
VirtualDevice*) /vcl/source/pdf/pdfwriter_impl2.cxx:821:34
    >     #7 0x7f5626a3a9a5 in vcl::PDFWriter::PlayMetafile(GDIMetaFile const&, 
vcl::PDFWriter::PlayMetafileContext const&, vcl::PDFExtOutDevData*) 
/vcl/source/pdf/pdfwriter.cxx:474:22
    >     #8 0x7f5599ef9e75 in PDFExport::ImplExportPage(vcl::PDFWriter&, 
vcl::PDFExtOutDevData&, GDIMetaFile const&) 
/filter/source/pdf/pdfexport.cxx:1333:13
    >     #9 0x7f5599ef807c in PDFExport::ExportSelection(vcl::PDFWriter&, 
com::sun::star::uno::Reference<com::sun::star::view::XRenderable> const&, 
com::sun::star::uno::Any const&, StringRangeEnumerator const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>&, int) 
/filter/source/pdf/pdfexport.cxx:212:25
    >     #10 0x7f5599f11329 in PDFExport::Export(rtl::OUString const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) 
/filter/source/pdf/pdfexport.cxx:1180:28
    >     #11 0x7f5599f86342 in 
PDFFilter::implExport(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&) /filter/source/pdf/pdffilter.cxx:182:24
    >     #12 0x7f5599f87093 in 
PDFFilter::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&) /filter/source/pdf/pdffilter.cxx:247:23
    >     #13 0x7f55df8d3f26 in SfxObjectShell::ExportTo(SfxMedium&) 
/sfx2/source/doc/objstor.cxx:2908:25
    >     #14 0x7f55df8bf658 in SfxObjectShell::SaveTo_Impl(SfxMedium&, 
SfxItemSet const*) /sfx2/source/doc/objstor.cxx:1929:19
    >     #15 0x7f55df8fbf63 in SfxObjectShell::PreDoSaveAs_Impl(rtl::OUString 
const&, rtl::OUString const&, SfxItemSet const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) 
/sfx2/source/doc/objstor.cxx:3421:39
    >     #16 0x7f55df8f383c in SfxObjectShell::CommonSaveAs_Impl(INetURLObject 
const&, rtl::OUString const&, SfxItemSet&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) 
/sfx2/source/doc/objstor.cxx:3212:9
    >     #17 0x7f55df82ca66 in 
SfxObjectShell::APISaveAs_Impl(std::basic_string_view<char16_t, 
std::char_traits<char16_t> >, SfxItemSet&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) 
/sfx2/source/doc/objserv.cxx:323:19
    >     #18 0x7f55dfb19501 in SfxBaseModel::impl_store(rtl::OUString const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, 
bool) /sfx2/source/doc/sfxbasemodel.cxx:3253:42
    >     #19 0x7f55dfb20834 in SfxBaseModel::storeToURL(rtl::OUString const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) 
/sfx2/source/doc/sfxbasemodel.cxx:1834:13
    >     #20 0x7f5603982e5a in 
UnoApiTest::saveWithParams(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
 const&) /test/source/unoapi_test.cxx:194:16
    >     #21 0x7f5604ee9776 in (anonymous 
namespace)::PdfExportTest2::saveAsPDF(std::basic_string_view<char16_t, 
std::char_traits<char16_t> >) /vcl/qa/cppunit/pdfexport/pdfexport2.cxx:76:5
    >     #22 0x7f560518fa16 in (anonymous 
namespace)::testTdf145873::TestBody() 
/vcl/qa/cppunit/pdfexport/pdfexport2.cxx:4171:5
    
    (<https://ci.libreoffice.org/job/lo_ubsan/3685/>)
    
    Change-Id: I607d1b66bdae9cece0102a99ef817864b3d27877
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/191928
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <[email protected]>

diff --git a/vcl/source/pdf/pdfwriter_impl.cxx 
b/vcl/source/pdf/pdfwriter_impl.cxx
index 90b6c08440dd..c277e0d48d37 100644
--- a/vcl/source/pdf/pdfwriter_impl.cxx
+++ b/vcl/source/pdf/pdfwriter_impl.cxx
@@ -6764,7 +6764,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const 
OUString& rText, bool
     // if the mapmode is distorted we need to adjust for that also
     if( m_aCurrentPDFState.m_aMapMode.GetScaleX() != 
m_aCurrentPDFState.m_aMapMode.GetScaleY() )
     {
-        fXScale *= double(m_aCurrentPDFState.m_aMapMode.GetScaleX() / 
m_aCurrentPDFState.m_aMapMode.GetScaleY());
+        fXScale *= double(m_aCurrentPDFState.m_aMapMode.GetScaleX()) / 
double(m_aCurrentPDFState.m_aMapMode.GetScaleY());
     }
 
     Degree10 nAngle = m_aCurrentPDFState.m_aFont.GetOrientation();

Reply via email to