Sat Jul 11 09:07:03 2020 UTC ()
Pullup ticket #6270 - requested by leot
graphics/cairo: fix crashes

Revisions pulled up:
- graphics/cairo/Makefile                                       1.146
- graphics/cairo/distinfo                                       1.89
- graphics/cairo/patches/patch-src_cairo-ft-font.c              1.1

---
   Module Name:    pkgsrc
   Committed By:   leot
   Date:           Thu Jul  9 14:38:55 UTC 2020

   Modified Files:
           pkgsrc/graphics/cairo: Makefile distinfo
   Added Files:
           pkgsrc/graphics/cairo/patches: patch-src_cairo-ft-font.c

   Log Message:
   cairo: backport patches from upstream to use FT_Done_MM_Var instead of free

   Memory allocated via FT_Get_MM_Var should be freed via FT_Done_MM_Var since
   freetype 2.9.  Backport patches from upstream to address missing parts not doing
   that.

   PKGREVISION++


(bsiegert)
diff -r1.145 -r1.145.8.1 pkgsrc/graphics/cairo/Makefile
diff -r1.88 -r1.88.14.1 pkgsrc/graphics/cairo/distinfo
diff -r0 -r1.1.2.2 pkgsrc/graphics/cairo/patches/patch-src_cairo-ft-font.c

cvs diff -r1.145 -r1.145.8.1 pkgsrc/graphics/cairo/Makefile (expand / switch to unified diff)

--- pkgsrc/graphics/cairo/Makefile 2019/08/28 22:08:12 1.145
+++ pkgsrc/graphics/cairo/Makefile 2020/07/11 09:07:03 1.145.8.1
@@ -1,17 +1,19 @@ @@ -1,17 +1,19 @@
1# $NetBSD: Makefile,v 1.145 2019/08/28 22:08:12 wiz Exp $ 1# $NetBSD: Makefile,v 1.145.8.1 2020/07/11 09:07:03 bsiegert Exp $
2 2
3.include "../../graphics/cairo/Makefile.common" 3.include "../../graphics/cairo/Makefile.common"
4 4
 5PKGREVISION= 1
 6
5TEST_TARGET= check 7TEST_TARGET= check
6 8
7.include "options.mk" 9.include "options.mk"
8 10
9.include "../../archivers/lzo/buildlink3.mk" 11.include "../../archivers/lzo/buildlink3.mk"
10.include "../../devel/zlib/buildlink3.mk" 12.include "../../devel/zlib/buildlink3.mk"
11.include "../../fonts/fontconfig/buildlink3.mk" 13.include "../../fonts/fontconfig/buildlink3.mk"
12.include "../../graphics/freetype2/buildlink3.mk" 14.include "../../graphics/freetype2/buildlink3.mk"
13.include "../../graphics/png/buildlink3.mk" 15.include "../../graphics/png/buildlink3.mk"
14# include? 16# include?
15#.include "../../print/libspectre/buildlink3.mk" 17#.include "../../print/libspectre/buildlink3.mk"
16BUILDLINK_API_DEPENDS.pixman+= pixman>=0.30.0 18BUILDLINK_API_DEPENDS.pixman+= pixman>=0.30.0
17.include "../../x11/pixman/buildlink3.mk" 19.include "../../x11/pixman/buildlink3.mk"

cvs diff -r1.88 -r1.88.14.1 pkgsrc/graphics/cairo/distinfo (expand / switch to unified diff)

--- pkgsrc/graphics/cairo/distinfo 2018/11/14 17:14:52 1.88
+++ pkgsrc/graphics/cairo/distinfo 2020/07/11 09:07:03 1.88.14.1
@@ -1,10 +1,11 @@ @@ -1,10 +1,11 @@
1$NetBSD: distinfo,v 1.88 2018/11/14 17:14:52 kleink Exp $ 1$NetBSD: distinfo,v 1.88.14.1 2020/07/11 09:07:03 bsiegert Exp $
2 2
3SHA1 (cairo-1.16.0.tar.xz) = 00e81842ae5e81bb0343108884eb5205be0eac14 3SHA1 (cairo-1.16.0.tar.xz) = 00e81842ae5e81bb0343108884eb5205be0eac14
4RMD160 (cairo-1.16.0.tar.xz) = cfd2ef6ec55b267e04600f6b1e36bb07f2566b35 4RMD160 (cairo-1.16.0.tar.xz) = cfd2ef6ec55b267e04600f6b1e36bb07f2566b35
5SHA512 (cairo-1.16.0.tar.xz) = 9eb27c4cf01c0b8b56f2e15e651f6d4e52c99d0005875546405b64f1132aed12fbf84727273f493d84056a13105e065009d89e94a8bfaf2be2649e232b82377f 5SHA512 (cairo-1.16.0.tar.xz) = 9eb27c4cf01c0b8b56f2e15e651f6d4e52c99d0005875546405b64f1132aed12fbf84727273f493d84056a13105e065009d89e94a8bfaf2be2649e232b82377f
6Size (cairo-1.16.0.tar.xz) = 41997432 bytes 6Size (cairo-1.16.0.tar.xz) = 41997432 bytes
7SHA1 (patch-aa) = b01bc60f77a7122b0c0d0d9b25ad512bac7c190c 7SHA1 (patch-aa) = b01bc60f77a7122b0c0d0d9b25ad512bac7c190c
8SHA1 (patch-ab) = 11f7e0e59bd5c51a8fdacb48dcf2f2fefdf3b768 8SHA1 (patch-ab) = 11f7e0e59bd5c51a8fdacb48dcf2f2fefdf3b768
9SHA1 (patch-ac) = 1785bbef6bcab4781bf89e1b986a7eb96e5f2b64 9SHA1 (patch-ac) = 1785bbef6bcab4781bf89e1b986a7eb96e5f2b64
10SHA1 (patch-ad) = a1068a37113b162ccfe14d7f1bd0baa9df7e5530 10SHA1 (patch-ad) = a1068a37113b162ccfe14d7f1bd0baa9df7e5530
 11SHA1 (patch-src_cairo-ft-font.c) = 97288d79380473869f1049c1d8955a2f6fa3d178

File Added: pkgsrc/graphics/cairo/patches/patch-src_cairo-ft-font.c
$NetBSD: patch-src_cairo-ft-font.c,v 1.1.2.2 2020/07/11 09:07:03 bsiegert Exp $

Use FT_Done_MM_Var instead of free when available.

Fixes possible crashes and memory leaks.

Backport from upstream commits 90e85c24, a68c1968.

--- src/cairo-ft-font.c.orig	2020-07-09 14:26:11.503421448 +0000
+++ src/cairo-ft-font.c
@@ -459,6 +459,11 @@ _cairo_ft_unscaled_font_init (cairo_ft_u
 		unscaled->variations = calloc (ft_mm_var->num_axis, sizeof (FT_Fixed));
 		if (unscaled->variations)
 		    FT_Get_Var_Design_Coordinates (face, ft_mm_var->num_axis, unscaled->variations);
+#if HAVE_FT_DONE_MM_VAR
+		FT_Done_MM_Var (face->glyph->library, ft_mm_var);
+#else
+		free (ft_mm_var);
+#endif
 	    }
 	}
 #endif
@@ -2393,7 +2398,11 @@ skip:
 done:
         free (coords);
         free (current_coords);
+#if HAVE_FT_DONE_MM_VAR
+        FT_Done_MM_Var (face->glyph->library, ft_mm_var);
+#else
         free (ft_mm_var);
+#endif
     }
 }