<html>
<head>
<base href="https://bugs.documentfoundation.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_UNCONFIRMED "
title="UNCONFIRMED - -fsanitize=float-divide-by-zero in libodfgen::getEllipticalArcBBox"
href="https://bugs.documentfoundation.org/show_bug.cgi?id=126056">126056</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>-fsanitize=float-divide-by-zero in libodfgen::getEllipticalArcBBox
</td>
</tr>
<tr>
<th>Product</th>
<td>LibreOffice
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>All
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>UNCONFIRMED
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Component</th>
<td>filters and storage
</td>
</tr>
<tr>
<th>Assignee</th>
<td>libreoffice-bugs@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>sbergman@redhat.com
</td>
</tr>
<tr>
<th>CC</th>
<td>dtardon@redhat.com
</td>
</tr></table>
<p>
<div>
<pre>Created <span class=""><a href="http://bugs.documentfoundation.org/attachment.cgi?id=152357" name="attach_152357" title="example document">attachment 152357</a> <a href="http://bugs.documentfoundation.org/attachment.cgi?id=152357&action=edit" title="example document">[details]</a></span>
example document
At least on recent master, loading attached crashtestdata file
caolan/libmspub_icu_global_buffer_overflow.sample in a Linux UBSan build fails
with
<span class="quote">> GraphicFunctions.cxx:88:81: runtime error: division by zero
> #0 in libodfgen::getEllipticalArcBBox(double, double, double, double, double, bool, bool, double, double, double&, double&, double&, double&) at workdir/UnpackedTarball/libodfgen/src/GraphicFunctions.cxx:88:81 (instdir/program/../program/libodfgen-0.1-lo.so.1 +0x2b2dc0)
> #1 in libodfgen::getPathBBox(librevenge::RVNGPropertyListVector const&, double&, double&, double&, double&) at workdir/UnpackedTarball/libodfgen/src/GraphicFunctions.cxx:410:4 (instdir/program/../program/libodfgen-0.1-lo.so.1 +0x2be398)
> #2 in OdfGenerator::drawPath(librevenge::RVNGPropertyListVector const&, librevenge::RVNGPropertyList const&) at workdir/UnpackedTarball/libodfgen/src/OdfGenerator.cxx:1258:7 (instdir/program/../program/libodfgen-0.1-lo.so.1 +0x4b62ed)
> #3 in OdfGenerator::drawPath(librevenge::RVNGPropertyList const&) at workdir/UnpackedTarball/libodfgen/src/OdfGenerator.cxx:1249:2 (instdir/program/../program/libodfgen-0.1-lo.so.1 +0x4b5d3e)
> #4 in OdgGenerator::drawPath(librevenge::RVNGPropertyList const&) at workdir/UnpackedTarball/libodfgen/src/OdgGenerator.cxx:555:10 (instdir/program/../program/libodfgen-0.1-lo.so.1 +0x54b8d9)
> #5 in libmspub::writeCustomShape(libmspub::ShapeType, librevenge::RVNGPropertyList&, librevenge::RVNGDrawingInterface*, double, double, double, double, bool, libmspub::VectorTransformation2D, std::vector<libmspub::Line, std::allocator<libmspub::Line> >, std::function<double (unsigned int)>, std::vector<libmspub::Color, std::allocator<libmspub::Color> > const&, std::shared_ptr<libmspub::CustomShape const>) at workdir/UnpackedTarball/libmspub/src/lib/PolygonUtils.cpp:6371:14 (instdir/program/../program/libwpftdrawlo.so +0x29e599b)
> #6 in libmspub::MSPUBCollector::paintShape(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const at workdir/UnpackedTarball/libmspub/src/lib/MSPUBCollector.cpp:1084:7 (instdir/program/../program/libwpftdrawlo.so +0x275803d)
> #7 in std::function<void ()> std::__invoke_impl<std::function<void ()>, std::function<void ()> (libmspub::MSPUBCollector::*&)(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const, libmspub::MSPUBCollector const*&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&>(std::__invoke_memfun_deref, std::function<void ()> (libmspub::MSPUBCollector::*&)(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const, libmspub::MSPUBCollector const*&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool&&, libmspub::VectorTransformation2D const&) at /home/sbergman/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/invoke.h:73:14 (instdir/program/../program/libwpftdrawlo.so +0x28944c6)
> #8 in std::__invoke_result<std::function<void ()> (libmspub::MSPUBCollector::*&)(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const, libmspub::MSPUBCollector const*&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&>::type std::__invoke<std::function<void ()> (libmspub::MSPUBCollector::*&)(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const, libmspub::MSPUBCollector const*&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&>(std::function<void ()> (libmspub::MSPUBCollector::*&)(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const, libmspub::MSPUBCollector const*&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool&&, libmspub::VectorTransformation2D const&) at /home/sbergman/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/invoke.h:95:14 (instdir/program/../program/libwpftdrawlo.so +0x289346f)
> #9 in std::function<void ()> std::_Bind<std::function<void ()> (libmspub::MSPUBCollector::* (libmspub::MSPUBCollector const*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>, std::_Placeholder<4>, std::_Placeholder<5>))(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const>::__call<std::function<void ()>, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool&&, libmspub::VectorTransformation2D const&, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul>(std::tuple<libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool&&, libmspub::VectorTransformation2D const&>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul>) at /home/sbergman/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/functional:400:11 (instdir/program/../program/libwpftdrawlo.so +0x2892c98)
> #10 in std::function<void ()> std::_Bind<std::function<void ()> (libmspub::MSPUBCollector::* (libmspub::MSPUBCollector const*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>, std::_Placeholder<4>, std::_Placeholder<5>))(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const>::operator()<libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&, std::function<void ()> >(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool&&, libmspub::VectorTransformation2D const&) at /home/sbergman/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/functional:482:17 (instdir/program/../program/libwpftdrawlo.so +0x2892381)
> #11 in std::function<void ()> std::__invoke_impl<std::function<void ()>, std::_Bind<std::function<void ()> (libmspub::MSPUBCollector::* (libmspub::MSPUBCollector const*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>, std::_Placeholder<4>, std::_Placeholder<5>))(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const>&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&>(std::__invoke_other, std::_Bind<std::function<void ()> (libmspub::MSPUBCollector::* (libmspub::MSPUBCollector const*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>, std::_Placeholder<4>, std::_Placeholder<5>))(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const>&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool&&, libmspub::VectorTransformation2D const&) at /home/sbergman/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/invoke.h:60:14 (instdir/program/../program/libwpftdrawlo.so +0x2891e81)
> #12 in std::enable_if<is_invocable_r_v<std::function<void ()>, std::_Bind<std::function<void ()> (libmspub::MSPUBCollector::* (libmspub::MSPUBCollector const*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>, std::_Placeholder<4>, std::_Placeholder<5>))(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const>&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&>, std::function<void ()> >::type std::__invoke_r<std::function<void ()>, std::_Bind<std::function<void ()> (libmspub::MSPUBCollector::* (libmspub::MSPUBCollector const*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>, std::_Placeholder<4>, std::_Placeholder<5>))(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const>&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&>(std::_Bind<std::function<void ()> (libmspub::MSPUBCollector::* (libmspub::MSPUBCollector const*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>, std::_Placeholder<4>, std::_Placeholder<5>))(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const>&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool&&, libmspub::VectorTransformation2D const&) at /home/sbergman/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/invoke.h:113:9 (instdir/program/../program/libwpftdrawlo.so +0x2891981)
> #13 in std::_Function_handler<std::function<void ()> (libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&), std::_Bind<std::function<void ()> (libmspub::MSPUBCollector::* (libmspub::MSPUBCollector const*, std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>, std::_Placeholder<4>, std::_Placeholder<5>))(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const> >::_M_invoke(std::_Any_data const&, libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool&&, libmspub::VectorTransformation2D const&) at /home/sbergman/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/std_function.h:291:9 (instdir/program/../program/libwpftdrawlo.so +0x288f868)
> #14 in std::function<std::function<void ()> (libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&)>::operator()(libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&) const at /home/sbergman/gcc/trunk/inst/lib/gcc/x86_64-pc-linux-gnu/10.0.0/../../../../include/c++/10.0.0/bits/std_function.h:624:14 (instdir/program/../program/libwpftdrawlo.so +0x29fe503)
> #15 in libmspub::ShapeGroupElement::visit(std::function<std::function<void ()> (libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&)>, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&) const at workdir/UnpackedTarball/libmspub/src/lib/ShapeGroupElement.cpp:70:39 (instdir/program/../program/libwpftdrawlo.so +0x29fbf75)
> #16 in libmspub::ShapeGroupElement::visit(std::function<std::function<void ()> (libmspub::ShapeInfo const&, libmspub::Coordinate const&, libmspub::VectorTransformation2D const&, bool, libmspub::VectorTransformation2D const&)>) const at workdir/UnpackedTarball/libmspub/src/lib/ShapeGroupElement.cpp:85:3 (instdir/program/../program/libwpftdrawlo.so +0x29fc863)
> #17 in libmspub::MSPUBCollector::writePageShapes(unsigned int) const at workdir/UnpackedTarball/libmspub/src/lib/MSPUBCollector.cpp:1800:17 (instdir/program/../program/libwpftdrawlo.so +0x277cb1a)
> #18 in libmspub::MSPUBCollector::writePage(unsigned int) const at workdir/UnpackedTarball/libmspub/src/lib/MSPUBCollector.cpp:1791:5 (instdir/program/../program/libwpftdrawlo.so +0x277aefa)
> #19 in libmspub::MSPUBCollector::go() at workdir/UnpackedTarball/libmspub/src/lib/MSPUBCollector.cpp:1867:9 (instdir/program/../program/libwpftdrawlo.so +0x277f2b8)
> #20 in libmspub::MSPUBParser::parse() at workdir/UnpackedTarball/libmspub/src/lib/MSPUBParser.cpp:225:23 (instdir/program/../program/libwpftdrawlo.so +0x28d5c15)
> #21 in libmspub::MSPUBDocument::parse(librevenge::RVNGInputStream*, librevenge::RVNGDrawingInterface*) at workdir/UnpackedTarball/libmspub/src/lib/MSPUBDocument.cpp:150:22 (instdir/program/../program/libwpftdrawlo.so +0x273a81c)
> #22 in MSPUBImportFilter::doImportDocument(weld::Window*, librevenge::RVNGInputStream&, OdgGenerator&, utl::MediaDescriptor&) at writerperfect/source/draw/MSPUBImportFilter.cxx:27:12 (instdir/program/../program/libwpftdrawlo.so +0x1fef7a3)
> #23 in writerperfect::detail::ImportFilterImpl<OdgGenerator>::filter(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at writerperfect/inc/ImportFilter.hxx:103:16 (instdir/program/../program/libwpftdrawlo.so +0x1fcbae9)
> #24 in SfxObjectShell::ImportFrom(SfxMedium&, com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) at sfx2/source/doc/objstor.cxx:2220:34 (instdir/program/libsfxlo.so +0x4bac775)
> #25 in sd::DrawDocShell::ImportFrom(SfxMedium&, com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) at sd/source/ui/docshell/docshel4.cxx:399:39 (instdir/program/../program/libsdlo.so +0x4eb618b)
> #26 in SfxObjectShell::DoLoad(SfxMedium*) at sfx2/source/doc/objstor.cxx:753:23 (instdir/program/libsfxlo.so +0x4b7512b)
> #27 in SfxBaseModel::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at sfx2/source/doc/sfxbasemodel.cxx:1852:36 (instdir/program/libsfxlo.so +0x4d28a71)
> #28 in (anonymous namespace)::SfxFrameLoader_Impl::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) at sfx2/source/view/frmload.cxx:691:28 (instdir/program/libsfxlo.so +0x543e2bc)
> #29 in framework::LoadEnv::impl_loadContent() at framework/source/loadenv/loadenv.cxx:1152:37 (instdir/program/../program/libfwklo.so +0x1e69267)
> #30 in framework::LoadEnv::startLoading() at framework/source/loadenv/loadenv.cxx:385:20 (instdir/program/../program/libfwklo.so +0x1e59b6f)
> #31 in framework::LoadDispatcher::impl_dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) at framework/source/dispatch/loaddispatcher.cxx:106:19 (instdir/program/../program/libfwklo.so +0x1b61aba)
> #32 in framework::LoadDispatcher::dispatchWithReturnValue(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at framework/source/dispatch/loaddispatcher.cxx:58:12 (instdir/program/../program/libfwklo.so +0x1b63ae0)
> #33 in non-virtual thunk to framework::LoadDispatcher::dispatchWithReturnValue(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at framework/source/dispatch/loaddispatcher.cxx (instdir/program/../program/libfwklo.so +0x1b63c1d)
> #34 in comphelper::SynchronousDispatch::dispatch(com::sun::star::uno::Reference<com::sun::star::uno::XInterface> const&, rtl::OUString const&, rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) at comphelper/source/misc/synchronousdispatch.cxx:62:31 (instdir/program/libcomphelper.so +0x156e84c)
> #35 in desktop::DispatchWatcher::executeDispatchRequests(std::__debug::vector<desktop::DispatchWatcher::DispatchRequest, std::allocator<desktop::DispatchWatcher::DispatchRequest> > const&, bool) at desktop/source/app/dispatchwatcher.cxx:502:26 (instdir/program/libsofficeapp.so +0x90203c)
> #36 in desktop::RequestHandler::ExecuteCmdLineRequests(desktop::ProcessDocumentsRequest&, bool) at desktop/source/app/officeipcthread.cxx:1360:38 (instdir/program/libsofficeapp.so +0x972671)
> #37 in desktop::Desktop::OpenClients() at desktop/source/app/app.cxx:2148:14 (instdir/program/libsofficeapp.so +0x7e4699)
> #38 in desktop::Desktop::OpenClients_Impl(void*) at desktop/source/app/app.cxx:1935:9 (instdir/program/libsofficeapp.so +0x7de821)
> #39 in desktop::Desktop::LinkStubOpenClients_Impl(void*, void*) at desktop/source/app/app.cxx:1918:1 (instdir/program/libsofficeapp.so +0x7d9cda)
> #40 in Link<void*, void>::Call(void*) const at include/tools/link.hxx:112:45 (instdir/program/libvcllo.so +0x697df31)
> #41 in ImplHandleUserEvent(ImplSVEvent*) at vcl/source/window/winproc.cxx:1964:30 (instdir/program/libvcllo.so +0x696b8ef)
> #42 in ImplWindowFrameProc(vcl::Window*, SalEvent, void const*) at vcl/source/window/winproc.cxx:2517:13 (instdir/program/libvcllo.so +0x69549c5)
> #43 in SalFrame::CallCallback(SalEvent, void const*) const at vcl/inc/salframe.hxx:299:29 (instdir/program/libvcllo.so +0x993db98)
> #44 in SvpSalInstance::ProcessEvent(SalUserEventList::SalUserEvent) at vcl/headless/svpinst.cxx:282:22 (instdir/program/libvcllo.so +0x99c3262)
> #45 in non-virtual thunk to SvpSalInstance::ProcessEvent(SalUserEventList::SalUserEvent) at vcl/headless/svpinst.cxx (instdir/program/libvcllo.so +0x99c3c92)
> #46 in SalUserEventList::DispatchUserEvents(bool) at vcl/source/app/salusereventlist.cxx:109:17 (instdir/program/libvcllo.so +0x8c06958)
> #47 in SvpSalInstance::DoYield(bool, bool) at vcl/headless/svpinst.cxx:427:19 (instdir/program/libvcllo.so +0x99c7ea4)
> #48 in ImplYield(bool, bool) at vcl/source/app/svapp.cxx:457:48 (instdir/program/libvcllo.so +0x8f35ae3)
> #49 in Application::Yield() at vcl/source/app/svapp.cxx:521:5 (instdir/program/libvcllo.so +0x8f35067)
> #50 in Application::Execute() at vcl/source/app/svapp.cxx:438:9 (instdir/program/libvcllo.so +0x8f34ddc)
> #51 in desktop::Desktop::Main() at desktop/source/app/app.cxx:1620:17 (instdir/program/libsofficeapp.so +0x7d36b0)
> #52 in ImplSVMain() at vcl/source/app/svmain.cxx:202:35 (instdir/program/libvcllo.so +0x8fdca0c)
> #53 in SVMain() at vcl/source/app/svmain.cxx:236:12 (instdir/program/libvcllo.so +0x8fe5f70)
> #54 in soffice_main at desktop/source/app/sofficemain.cxx:170:12 (instdir/program/libsofficeapp.so +0x9b40c1)
> #55 in sal_main at desktop/source/app/main.c:48:15 (instdir/program/soffice.bin +0x323d0c)
> #56 in main at desktop/source/app/main.c:47:1 (instdir/program/soffice.bin +0x323ce6)
> #57 in __libc_start_main at /usr/src/debug/glibc-2.29-24-g2ec0b166bf/csu/../csu/libc-start.c:308:16 (/lib64/libc.so.6 +0x23f32)
> #58 in _start at <null> (instdir/program/soffice.bin +0x24e02d)
>
> SUMMARY: UndefinedBehaviorSanitizer: float-divide-by-zero GraphicFunctions.cxx:88:81 in </span >
with
<span class="quote">> (gdb) f 3
> #3 0x00007fff6de73dc1 in libodfgen::getEllipticalArcBBox (x0=3.168359713496788, y0=9.0588927220857798, rx=0.31875000000000009, ry=0.24375000000000036, phi=-0, largeArc=false, sweep=false, x=3.168359713496788, y=9.0588927220857798, xmin=@0x7fff9b100ab0: 3.168359713496788, ymin=@0x7fff9b100af0: 9.0588927220857798, xmax=@0x7fff9b100ad0: 3.168359713496788, ymax=@0x7fff9b100b10: 9.0588927220857798) at /home/sbergman/lo/core/workdir/UnpackedTarball/libodfgen/src/GraphicFunctions.cxx:88
> 88 double radicant = (rx*rx*ry*ry - rx*rx*y1prime*y1prime - ry*ry*x1prime*x1prime)/(rx*rx*y1prime*y1prime + ry*ry*x1prime*x1prime);
> (gdb) p rx
> $1 = 0.31875000000000009
> (gdb) p ry
> $2 = 0.24375000000000036
> (gdb) p y1prime
> $3 = 0
> (gdb) p x1prime
> $4 = 0
> (gdb) p phi
> $5 = -0
> (gdb) p x0
> $6 = 3.168359713496788
> (gdb) p x
> $7 = 3.168359713496788
> (gdb) p y0
> $8 = 9.0588927220857798
> (gdb) p y
> $9 = 9.0588927220857798</span >
Not obvious to me whether this is a bug in one of the callers (LO or libmspub),
a bug in libodfgen, or the code deliberately relies on the (nonstandard) IEEE
754 of evaluating float-divide-by-zero as infinity.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>