[Libreoffice-commits] core.git: external/libodfgen

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Sun Aug 1 15:20:52 UTC 2021


 external/libodfgen/UnpackedTarball_libodfgen.mk |    4 ++++
 external/libodfgen/ellipticalarc.patch          |   13 +++++++++++++
 2 files changed, 17 insertions(+)

New commits:
commit fa759359587808f5e74217e558ee3dd9143710f7
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Thu Jul 29 16:45:50 2021 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Sun Aug 1 17:20:17 2021 +0200

    external/libodfgen: Avoid division by zero for empty elliptical arc
    
    ...as seen when running under UBSan `instdir/program/soffice --headless
    --convert-to epub` of caolan/libmspub_icu_global_buffer_overflow.sample from the
    crash-testing corpus.
    
    <https://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes> specifies:
    "If the endpoints (x1, y1) and (x2, y2) are identical, then this is equivalent
    to omitting the elliptical arc segment entirely."  (And getEllipticalArgBox's
    xmin, ymin, xmax, and ymax out parameters are pre-filled with suitable values at
    the call site in getPathBBox, so that we can return here without setting those
    out parameters.)
    
    Change-Id: I6b0b693354648f4015cec2395737fb9abe5ae956
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119680
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/external/libodfgen/UnpackedTarball_libodfgen.mk b/external/libodfgen/UnpackedTarball_libodfgen.mk
index d6c84e517970..89ff9eba353f 100644
--- a/external/libodfgen/UnpackedTarball_libodfgen.mk
+++ b/external/libodfgen/UnpackedTarball_libodfgen.mk
@@ -15,6 +15,10 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libodfgen,0))
 
 $(eval $(call gb_UnpackedTarball_update_autoconf_configs,libodfgen))
 
+$(eval $(call gb_UnpackedTarball_add_patches,libodfgen, \
+    external/libodfgen/ellipticalarc.patch \
+))
+
 ifeq ($(SYSTEM_REVENGE),)
 $(eval $(call gb_UnpackedTarball_add_patches,libodfgen, \
     external/libodfgen/rpath.patch \
diff --git a/external/libodfgen/ellipticalarc.patch b/external/libodfgen/ellipticalarc.patch
new file mode 100644
index 000000000000..27aaee77cb8a
--- /dev/null
+++ b/external/libodfgen/ellipticalarc.patch
@@ -0,0 +1,13 @@
+--- src/GraphicFunctions.cxx
++++ src/GraphicFunctions.cxx
+@@ -59,6 +59,10 @@
+                           double rx, double ry, double phi, bool largeArc, bool sweep, double x, double y,
+                           double &xmin, double &ymin, double &xmax, double &ymax)
+ {
++	if (x0 == x && y0 == y) {
++		return;
++	}
++
+ 	phi *= M_PI/180;
+ 	if (rx < 0.0)
+ 		rx *= -1.0;


More information about the Libreoffice-commits mailing list