diff options
Diffstat (limited to 'poky/meta/recipes-graphics/cairo')
5 files changed, 167 insertions, 0 deletions
diff --git a/poky/meta/recipes-graphics/cairo/cairo-fpu.inc b/poky/meta/recipes-graphics/cairo/cairo-fpu.inc new file mode 100644 index 000000000..fe7c53337 --- /dev/null +++ b/poky/meta/recipes-graphics/cairo/cairo-fpu.inc @@ -0,0 +1,6 @@ + +def get_cairo_fpu_setting(bb, d): + if d.getVar('TARGET_FPU') in [ 'soft' ]: + return "--disable-some-floating-point" + return "" + diff --git a/poky/meta/recipes-graphics/cairo/cairo.inc b/poky/meta/recipes-graphics/cairo/cairo.inc new file mode 100644 index 000000000..20e0d2c92 --- /dev/null +++ b/poky/meta/recipes-graphics/cairo/cairo.inc @@ -0,0 +1,48 @@ +SUMMARY = "The Cairo 2D vector graphics library" +DESCRIPTION = "Cairo is a multi-platform library providing anti-aliased \ +vector-based rendering for multiple target backends. Paths consist \ +of line segments and cubic splines and can be rendered at any width \ +with various join and cap styles. All colors may be specified with \ +optional translucence (opacity/alpha) and combined using the \ +extended Porter/Duff compositing algebra as found in the X Render \ +Extension." +HOMEPAGE = "http://cairographics.org" +BUGTRACKER = "http://bugs.freedesktop.org" +SECTION = "libs" + +LICENSE = "MPL-1 & LGPLv2.1 & GPLv3+" +LICENSE_${PN} = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-dev = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-doc = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-gobject = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-script-interpreter = "MPL-1 & LGPLv2.1" +LICENSE_${PN}-perf-utils = "GPLv3+" + +X11DEPENDS = "virtual/libx11 libsm libxrender libxext" +DEPENDS = "libpng fontconfig pixman glib-2.0 zlib" + +PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11 xcb', '', d)} \ + ${@bb.utils.filter('DISTRO_FEATURES', 'directfb', d)}" + +PACKAGECONFIG[x11] = "--with-x=yes -enable-xlib,--with-x=no --disable-xlib,${X11DEPENDS}" +PACKAGECONFIG[xcb] = "--enable-xcb,--disable-xcb,libxcb" +PACKAGECONFIG[directfb] = "--enable-directfb=yes,,directfb" +PACKAGECONFIG[valgrind] = "--enable-valgrind=yes,--disable-valgrind,valgrind" +PACKAGECONFIG[egl] = "--enable-egl=yes,--disable-egl,virtual/egl" +PACKAGECONFIG[glesv2] = "--enable-glesv2,--disable-glesv2,virtual/libgles2" +PACKAGECONFIG[opengl] = "--enable-gl,--disable-gl,virtual/libgl" + +#check for TARGET_FPU=soft and inform configure of the result so it can disable some floating points +require cairo-fpu.inc +EXTRA_OECONF += "${@get_cairo_fpu_setting(bb, d)} \ + --enable-tee \ + " + +inherit autotools pkgconfig upstream-version-is-even gtk-doc + +# We don't depend on binutils so we need to disable this +export ac_cv_lib_bfd_bfd_openr="no" +# Ensure we don't depend on LZO +export ac_cv_lib_lzo2_lzo2a_decompress="no" + +BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-graphics/cairo/cairo/0001-cairo-Fix-CVE-2017-9814.patch b/poky/meta/recipes-graphics/cairo/cairo/0001-cairo-Fix-CVE-2017-9814.patch new file mode 100644 index 000000000..7d02ab947 --- /dev/null +++ b/poky/meta/recipes-graphics/cairo/cairo/0001-cairo-Fix-CVE-2017-9814.patch @@ -0,0 +1,45 @@ +From 042421e9e3d266ad0bb7805132041ef51ad3234d Mon Sep 17 00:00:00 2001 +From: Adrian Johnson <ajohnson@redneon.com> +Date: Wed, 16 Aug 2017 22:52:35 -0400 +Subject: [PATCH] cairo: Fix CVE-2017-9814 + +The bug happens because in some scenarios the variable size can +have a value of 0 at line 1288. And malloc(0) is not returning +NULL as some people could expect: + + https://stackoverflow.com/questions/1073157/zero-size-malloc + +malloc(0) returns the smallest chunk possible. So the line 1290 +with the return is not execute. And the execution continues with +an invalid map. + +Since the size is 0 the variable map is not initialized correctly +at load_trutype_table. So, later when the variable map is accessed +previous values from a freed chunk are used. This could allows an +attacker to control the variable map. + +This patch have not merge in upstream now. + +Upstream-Status: Backport [https://bugs.freedesktop.org/show_bug.cgi?id=101547] +CVE: CVE-2017-9814 +Signed-off-by: Dengke Du <dengke.du@windriver.com> +--- + src/cairo-truetype-subset.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cairo-truetype-subset.c b/src/cairo-truetype-subset.c +index e3449a0..f77d11c 100644 +--- a/src/cairo-truetype-subset.c ++++ b/src/cairo-truetype-subset.c +@@ -1285,7 +1285,7 @@ _cairo_truetype_reverse_cmap (cairo_scaled_font_t *scaled_font, + return CAIRO_INT_STATUS_UNSUPPORTED; + + size = be16_to_cpu (map->length); +- map = malloc (size); ++ map = _cairo_malloc (size); + if (unlikely (map == NULL)) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); + +-- +2.8.1 + diff --git a/poky/meta/recipes-graphics/cairo/cairo/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff b/poky/meta/recipes-graphics/cairo/cairo/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff new file mode 100644 index 000000000..7aaad2eed --- /dev/null +++ b/poky/meta/recipes-graphics/cairo/cairo/cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff @@ -0,0 +1,22 @@ +Cairo: Fix Denial-of-Service Attack due to Logical Problem in Program + +https://bugs.freedesktop.org/show_bug.cgi?id=100763 + +CVE: CVE-2017-7475 +Upstream-Status: Submitted + +Signed-off-by: Fan Xin <fan.xin@jp.fujitsu.com> + +Index: cairo-1.15.4/src/cairo-ft-font.c +=================================================================== +--- cairo-1.15.4.orig/src/cairo-ft-font.c ++++ cairo-1.15.4/src/cairo-ft-font.c +@@ -1149,7 +1149,7 @@ _get_bitmap_surface (FT_Bitmap *bi + width = bitmap->width; + height = bitmap->rows; + +- if (width == 0 || height == 0) { ++ if (width == 0 || height == 0 || bitmap->buffer == NULL) { + *surface = (cairo_image_surface_t *) + cairo_image_surface_create_for_data (NULL, format, 0, 0, 0); + return (*surface)->base.status; diff --git a/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb b/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb new file mode 100644 index 000000000..075ca1ed3 --- /dev/null +++ b/poky/meta/recipes-graphics/cairo/cairo_1.14.12.bb @@ -0,0 +1,46 @@ +require cairo.inc + +LIC_FILES_CHKSUM = "file://COPYING;md5=e73e999e0c72b5ac9012424fa157ad77" + +SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.xz \ + file://cairo-get_bitmap_surface-bsc1036789-CVE-2017-7475.diff \ + file://0001-cairo-Fix-CVE-2017-9814.patch \ + " + +SRC_URI[md5sum] = "9f0db9dbfca0966be8acd682e636d165" +SRC_URI[sha256sum] = "8c90f00c500b2299c0a323dd9beead2a00353752b2092ead558139bd67f7bf16" + +PACKAGES =+ "cairo-gobject cairo-script-interpreter cairo-perf-utils" + +SUMMARY_${PN} = "The Cairo 2D vector graphics library" +DESCRIPTION_${PN} = "Cairo is a multi-platform library providing anti-aliased \ +vector-based rendering for multiple target backends. Paths consist \ +of line segments and cubic splines and can be rendered at any width \ +with various join and cap styles. All colors may be specified with \ +optional translucence (opacity/alpha) and combined using the \ +extended Porter/Duff compositing algebra as found in the X Render \ +Extension." + +SUMMARY_cairo-gobject = "The Cairo library GObject wrapper library" +DESCRIPTION_cairo-gobject = "A GObject wrapper library for the Cairo API." + +SUMMARY_cairo-script-interpreter = "The Cairo library script interpreter" +DESCRIPTION_cairo-script-interpreter = "The Cairo script interpreter implements \ +CairoScript. CairoScript is used by tracing utilities to enable the ability \ +to replay rendering." + +DESCRIPTION_cairo-perf-utils = "The Cairo library performance utilities" + +FILES_${PN} = "${libdir}/libcairo.so.*" +FILES_${PN}-dev += "${libdir}/cairo/*.so" +FILES_${PN}-gobject = "${libdir}/libcairo-gobject.so.*" +FILES_${PN}-script-interpreter = "${libdir}/libcairo-script-interpreter.so.*" +FILES_${PN}-perf-utils = "${bindir}/cairo-trace ${libdir}/cairo/*.la ${libdir}/cairo/libcairo-trace.so.*" + +do_install_append () { + rm -rf ${D}${bindir}/cairo-sphinx + rm -rf ${D}${libdir}/cairo/cairo-fdr* + rm -rf ${D}${libdir}/cairo/cairo-sphinx* + rm -rf ${D}${libdir}/cairo/.debug/cairo-fdr* + rm -rf ${D}${libdir}/cairo/.debug/cairo-sphinx* +} |