external/cairo/UnpackedTarball_cairo.mk     |    1 +
 external/cairo/cairo/cairo.ofz46165.patch.1 |   16 ++++++++++++++++
 2 files changed, 17 insertions(+)

New commits:
commit efb6845d42c44bbd75771cc1641bc5f2225d8a96
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Wed Mar 30 09:53:43 2022 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Wed Mar 30 12:20:52 2022 +0200

    ofz#46165 ubsan Divide-by-zero
    
    Change-Id: I5c56eae4456a03550770035610745de3be074679
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132299
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/external/cairo/UnpackedTarball_cairo.mk 
b/external/cairo/UnpackedTarball_cairo.mk
index 49a4a726bbe2..a2e9eb894d75 100644
--- a/external/cairo/UnpackedTarball_cairo.mk
+++ b/external/cairo/UnpackedTarball_cairo.mk
@@ -19,6 +19,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cairo,\
        external/cairo/cairo/san.patch.0 \
        external/cairo/cairo/0001-Fix-mask-usage-in-image-compositor.patch.1 \
     external/cairo/cairo/cairo-fix_function_signature.patch.1 \
+    external/cairo/cairo/cairo.ofz46165.patch.1 \
 ))
 
 ifeq ($(OS),iOS)
diff --git a/external/cairo/cairo/cairo.ofz46165.patch.1 
b/external/cairo/cairo/cairo.ofz46165.patch.1
new file mode 100644
index 000000000000..948313c2a186
--- /dev/null
+++ b/external/cairo/cairo/cairo.ofz46165.patch.1
@@ -0,0 +1,16 @@
+--- a/src/cairo-pen.c  2022-03-30 09:48:14.702456922 +0100
++++ b/src/cairo-pen.c  2022-03-30 09:50:40.011793460 +0100
+@@ -289,7 +289,12 @@
+     } else if (tolerance >= major_axis) {
+       num_vertices = 4;
+     } else {
+-      num_vertices = ceil (2*M_PI / acos (1 - tolerance / major_axis));
++      double divisor = acos (1 - tolerance / major_axis);
++
++      if (divisor == 0.0)
++          return 4;
++
++      num_vertices = ceil (2*M_PI / divisor);
+ 
+       /* number of vertices must be even */
+       if (num_vertices % 2)

Reply via email to