diff options
Diffstat (limited to 'yocto-poky/meta/recipes-gnome/librsvg')
-rw-r--r-- | yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_1.patch | 139 | ||||
-rw-r--r-- | yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_2.patch | 230 | ||||
-rw-r--r-- | yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_3.patch | 223 | ||||
-rw-r--r-- | yocto-poky/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch | 13 | ||||
-rw-r--r-- | yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.13.bb (renamed from yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.10.bb) | 16 |
5 files changed, 9 insertions, 612 deletions
diff --git a/yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_1.patch b/yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_1.patch deleted file mode 100644 index a3ba41f50..000000000 --- a/yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_1.patch +++ /dev/null @@ -1,139 +0,0 @@ -From d1c9191949747f6dcfd207831d15dd4ba00e31f2 Mon Sep 17 00:00:00 2001 -From: Benjamin Otte <otte@redhat.com> -Date: Wed, 7 Oct 2015 05:31:08 +0200 -Subject: [PATCH] state: Store mask as reference - -Instead of immediately looking up the mask, store the reference and look -it up on use. - -Upstream-status: Backport - -supporting patch -https://git.gnome.org/browse/librsvg/commit/rsvg-styles.c?id=d1c9191949747f6dcfd207831d15dd4ba00e31f2 - -CVE: CVE-2015-7558 -Signed-off-by: Armin Kuster <akuster@mvista.com> - ---- - rsvg-cairo-draw.c | 6 +++++- - rsvg-mask.c | 17 ----------------- - rsvg-mask.h | 2 -- - rsvg-styles.c | 12 ++++++++---- - rsvg-styles.h | 2 +- - 5 files changed, 14 insertions(+), 25 deletions(-) - -Index: librsvg-2.40.10/rsvg-cairo-draw.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-cairo-draw.c -+++ librsvg-2.40.10/rsvg-cairo-draw.c -@@ -825,7 +825,11 @@ rsvg_cairo_pop_render_stack (RsvgDrawing - cairo_set_operator (render->cr, state->comp_op); - - if (state->mask) { -- rsvg_cairo_generate_mask (render->cr, state->mask, ctx, &render->bbox); -+ RsvgNode *mask; -+ -+ mask = rsvg_defs_lookup (ctx->defs, state->mask); -+ if (mask && RSVG_NODE_TYPE (mask) == RSVG_NODE_TYPE_MASK) -+ rsvg_cairo_generate_mask (render->cr, (RsvgMask *) mask, ctx, &render->bbox); - } else if (state->opacity != 0xFF) - cairo_paint_with_alpha (render->cr, (double) state->opacity / 255.0); - else -Index: librsvg-2.40.10/rsvg-mask.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-mask.c -+++ librsvg-2.40.10/rsvg-mask.c -@@ -103,23 +103,6 @@ rsvg_get_url_string (const char *str) - } - - RsvgNode * --rsvg_mask_parse (const RsvgDefs * defs, const char *str) --{ -- char *name; -- -- name = rsvg_get_url_string (str); -- if (name) { -- RsvgNode *val; -- val = rsvg_defs_lookup (defs, name); -- g_free (name); -- -- if (val && RSVG_NODE_TYPE (val) == RSVG_NODE_TYPE_MASK) -- return val; -- } -- return NULL; --} -- --RsvgNode * - rsvg_clip_path_parse (const RsvgDefs * defs, const char *str) - { - char *name; -Index: librsvg-2.40.10/rsvg-mask.h -=================================================================== ---- librsvg-2.40.10.orig/rsvg-mask.h -+++ librsvg-2.40.10/rsvg-mask.h -@@ -48,8 +48,6 @@ struct _RsvgMask { - - G_GNUC_INTERNAL - RsvgNode *rsvg_new_mask (void); --G_GNUC_INTERNAL --RsvgNode *rsvg_mask_parse (const RsvgDefs * defs, const char *str); - - typedef struct _RsvgClipPath RsvgClipPath; - -Index: librsvg-2.40.10/rsvg-styles.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-styles.c -+++ librsvg-2.40.10/rsvg-styles.c -@@ -221,6 +221,7 @@ rsvg_state_clone (RsvgState * dst, const - - *dst = *src; - dst->parent = parent; -+ dst->mask = g_strdup (src->mask); - dst->font_family = g_strdup (src->font_family); - dst->lang = g_strdup (src->lang); - rsvg_paint_server_ref (dst->fill); -@@ -356,7 +357,8 @@ rsvg_state_inherit_run (RsvgState * dst, - - if (inherituninheritables) { - dst->clip_path_ref = src->clip_path_ref; -- dst->mask = src->mask; -+ g_free (dst->mask); -+ dst->mask = g_strdup (src->mask); - dst->enable_background = src->enable_background; - dst->adobe_blend = src->adobe_blend; - dst->opacity = src->opacity; -@@ -444,6 +446,7 @@ rsvg_state_inherit (RsvgState * dst, con - void - rsvg_state_finalize (RsvgState * state) - { -+ g_free (state->mask); - g_free (state->font_family); - g_free (state->lang); - rsvg_paint_server_unref (state->fill); -@@ -517,9 +520,10 @@ rsvg_parse_style_pair (RsvgHandle * ctx, - state->adobe_blend = 11; - else - state->adobe_blend = 0; -- } else if (g_str_equal (name, "mask")) -- state->mask = rsvg_mask_parse (ctx->priv->defs, value); -- else if (g_str_equal (name, "clip-path")) { -+ } else if (g_str_equal (name, "mask")) { -+ g_free (state->mask); -+ state->mask = rsvg_get_url_string (value); -+ } else if (g_str_equal (name, "clip-path")) { - state->clip_path_ref = rsvg_clip_path_parse (ctx->priv->defs, value); - } else if (g_str_equal (name, "overflow")) { - if (!g_str_equal (value, "inherit")) { -Index: librsvg-2.40.10/rsvg-styles.h -=================================================================== ---- librsvg-2.40.10.orig/rsvg-styles.h -+++ librsvg-2.40.10/rsvg-styles.h -@@ -80,7 +80,7 @@ struct _RsvgState { - cairo_matrix_t personal_affine; - - RsvgFilter *filter; -- void *mask; -+ char *mask; - void *clip_path_ref; - guint8 adobe_blend; /* 0..11 */ - guint8 opacity; /* 0..255 */ diff --git a/yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_2.patch b/yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_2.patch deleted file mode 100644 index 9f6820ef9..000000000 --- a/yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_2.patch +++ /dev/null @@ -1,230 +0,0 @@ -From 6cfaab12c70cd4a34c4730837f1ecdf792593c90 Mon Sep 17 00:00:00 2001 -From: Benjamin Otte <otte@redhat.com> -Date: Wed, 7 Oct 2015 07:57:39 +0200 -Subject: [PATCH] state: Look up clip path lazily - -Upstream-status: Backport - -supporting patch -https://git.gnome.org/browse/librsvg/commit/rsvg-styles.c?id=6cfaab12c70cd4a34c4730837f1ecdf792593c90 - -CVE: CVE-2015-7558 -Signed-off-by: Armin Kuster <akuster@mvista.com> - ---- - rsvg-cairo-draw.c | 56 +++++++++++++++++++++++++++++++++---------------------- - rsvg-mask.c | 17 ----------------- - rsvg-mask.h | 2 -- - rsvg-styles.c | 10 +++++++--- - rsvg-styles.h | 2 +- - 5 files changed, 42 insertions(+), 45 deletions(-) - -Index: librsvg-2.40.10/rsvg-cairo-draw.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-cairo-draw.c -+++ librsvg-2.40.10/rsvg-cairo-draw.c -@@ -461,7 +461,7 @@ rsvg_cairo_render_path (RsvgDrawingCtx * - return; - - need_tmpbuf = ((state->fill != NULL) && (state->stroke != NULL) && state->opacity != 0xff) -- || state->clip_path_ref || state->mask || state->filter -+ || state->clip_path || state->mask || state->filter - || (state->comp_op != CAIRO_OPERATOR_OVER); - - if (need_tmpbuf) -@@ -708,18 +708,6 @@ rsvg_cairo_generate_mask (cairo_t * cr, - } - - static void --rsvg_cairo_push_early_clips (RsvgDrawingCtx * ctx) --{ -- RsvgCairoRender *render = RSVG_CAIRO_RENDER (ctx->render); -- -- cairo_save (render->cr); -- if (rsvg_current_state (ctx)->clip_path_ref) -- if (((RsvgClipPath *) rsvg_current_state (ctx)->clip_path_ref)->units == userSpaceOnUse) -- rsvg_cairo_clip (ctx, rsvg_current_state (ctx)->clip_path_ref, NULL); -- --} -- --static void - rsvg_cairo_push_render_stack (RsvgDrawingCtx * ctx) - { - /* XXX: Untested, probably needs help wrt filters */ -@@ -731,9 +719,27 @@ rsvg_cairo_push_render_stack (RsvgDrawin - RsvgState *state = rsvg_current_state (ctx); - gboolean lateclip = FALSE; - -- if (rsvg_current_state (ctx)->clip_path_ref) -- if (((RsvgClipPath *) rsvg_current_state (ctx)->clip_path_ref)->units == objectBoundingBox) -- lateclip = TRUE; -+ if (rsvg_current_state (ctx)->clip_path) { -+ RsvgNode *node; -+ node = rsvg_defs_lookup (ctx->defs, rsvg_current_state (ctx)->clip_path); -+ if (node && RSVG_NODE_TYPE (node) == RSVG_NODE_TYPE_CLIP_PATH) { -+ RsvgClipPath *clip_path = (RsvgClipPath *) node; -+ -+ switch (clip_path->units) { -+ case userSpaceOnUse: -+ rsvg_cairo_clip (ctx, clip_path, NULL); -+ break; -+ case objectBoundingBox: -+ lateclip = TRUE; -+ break; -+ -+ default: -+ g_assert_not_reached (); -+ break; -+ } -+ -+ } -+ } - - if (state->opacity == 0xFF - && !state->filter && !state->mask && !lateclip && (state->comp_op == CAIRO_OPERATOR_OVER) -@@ -774,7 +780,9 @@ rsvg_cairo_push_render_stack (RsvgDrawin - void - rsvg_cairo_push_discrete_layer (RsvgDrawingCtx * ctx) - { -- rsvg_cairo_push_early_clips (ctx); -+ RsvgCairoRender *render = RSVG_CAIRO_RENDER (ctx->render); -+ -+ cairo_save (render->cr); - rsvg_cairo_push_render_stack (ctx); - } - -@@ -783,14 +791,18 @@ rsvg_cairo_pop_render_stack (RsvgDrawing - { - RsvgCairoRender *render = RSVG_CAIRO_RENDER (ctx->render); - cairo_t *child_cr = render->cr; -- gboolean lateclip = FALSE; -+ RsvgClipPath *lateclip = NULL; - cairo_surface_t *surface = NULL; - RsvgState *state = rsvg_current_state (ctx); - gboolean nest; - -- if (rsvg_current_state (ctx)->clip_path_ref) -- if (((RsvgClipPath *) rsvg_current_state (ctx)->clip_path_ref)->units == objectBoundingBox) -- lateclip = TRUE; -+ if (rsvg_current_state (ctx)->clip_path) { -+ RsvgNode *node; -+ node = rsvg_defs_lookup (ctx->defs, rsvg_current_state (ctx)->clip_path); -+ if (node && RSVG_NODE_TYPE (node) == RSVG_NODE_TYPE_CLIP_PATH -+ && ((RsvgClipPath *) node)->units == objectBoundingBox) -+ lateclip = (RsvgClipPath *) node; -+ } - - if (state->opacity == 0xFF - && !state->filter && !state->mask && !lateclip && (state->comp_op == CAIRO_OPERATOR_OVER) -@@ -820,7 +832,7 @@ rsvg_cairo_pop_render_stack (RsvgDrawing - nest ? 0 : render->offset_y); - - if (lateclip) -- rsvg_cairo_clip (ctx, rsvg_current_state (ctx)->clip_path_ref, &render->bbox); -+ rsvg_cairo_clip (ctx, lateclip, &render->bbox); - - cairo_set_operator (render->cr, state->comp_op); - -Index: librsvg-2.40.10/rsvg-mask.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-mask.c -+++ librsvg-2.40.10/rsvg-mask.c -@@ -102,23 +102,6 @@ rsvg_get_url_string (const char *str) - return NULL; - } - --RsvgNode * --rsvg_clip_path_parse (const RsvgDefs * defs, const char *str) --{ -- char *name; -- -- name = rsvg_get_url_string (str); -- if (name) { -- RsvgNode *val; -- val = rsvg_defs_lookup (defs, name); -- g_free (name); -- -- if (val && RSVG_NODE_TYPE (val) == RSVG_NODE_TYPE_CLIP_PATH) -- return val; -- } -- return NULL; --} -- - static void - rsvg_clip_path_set_atts (RsvgNode * self, RsvgHandle * ctx, RsvgPropertyBag * atts) - { -Index: librsvg-2.40.10/rsvg-mask.h -=================================================================== ---- librsvg-2.40.10.orig/rsvg-mask.h -+++ librsvg-2.40.10/rsvg-mask.h -@@ -58,8 +58,6 @@ struct _RsvgClipPath { - - G_GNUC_INTERNAL - RsvgNode *rsvg_new_clip_path (void); --G_GNUC_INTERNAL --RsvgNode *rsvg_clip_path_parse (const RsvgDefs * defs, const char *str); - - G_END_DECLS - #endif -Index: librsvg-2.40.10/rsvg-styles.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-styles.c -+++ librsvg-2.40.10/rsvg-styles.c -@@ -149,7 +149,7 @@ rsvg_state_init (RsvgState * state) - state->visible = TRUE; - state->cond_true = TRUE; - state->filter = NULL; -- state->clip_path_ref = NULL; -+ state->clip_path = NULL; - state->startMarker = NULL; - state->middleMarker = NULL; - state->endMarker = NULL; -@@ -222,6 +222,7 @@ rsvg_state_clone (RsvgState * dst, const - *dst = *src; - dst->parent = parent; - dst->mask = g_strdup (src->mask); -+ dst->clip_path = g_strdup (src->clip_path); - dst->font_family = g_strdup (src->font_family); - dst->lang = g_strdup (src->lang); - rsvg_paint_server_ref (dst->fill); -@@ -356,7 +357,8 @@ rsvg_state_inherit_run (RsvgState * dst, - } - - if (inherituninheritables) { -- dst->clip_path_ref = src->clip_path_ref; -+ g_free (dst->clip_path); -+ dst->clip_path = g_strdup (src->clip_path); - g_free (dst->mask); - dst->mask = g_strdup (src->mask); - dst->enable_background = src->enable_background; -@@ -447,6 +449,7 @@ void - rsvg_state_finalize (RsvgState * state) - { - g_free (state->mask); -+ g_free (state->clip_path); - g_free (state->font_family); - g_free (state->lang); - rsvg_paint_server_unref (state->fill); -@@ -524,7 +527,8 @@ rsvg_parse_style_pair (RsvgHandle * ctx, - g_free (state->mask); - state->mask = rsvg_get_url_string (value); - } else if (g_str_equal (name, "clip-path")) { -- state->clip_path_ref = rsvg_clip_path_parse (ctx->priv->defs, value); -+ g_free (state->clip_path); -+ state->clip_path = rsvg_get_url_string (value); - } else if (g_str_equal (name, "overflow")) { - if (!g_str_equal (value, "inherit")) { - state->overflow = rsvg_css_parse_overflow (value, &state->has_overflow); -Index: librsvg-2.40.10/rsvg-styles.h -=================================================================== ---- librsvg-2.40.10.orig/rsvg-styles.h -+++ librsvg-2.40.10/rsvg-styles.h -@@ -81,7 +81,7 @@ struct _RsvgState { - - RsvgFilter *filter; - char *mask; -- void *clip_path_ref; -+ char *clip_path; - guint8 adobe_blend; /* 0..11 */ - guint8 opacity; /* 0..255 */ - diff --git a/yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_3.patch b/yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_3.patch deleted file mode 100644 index dd67ab768..000000000 --- a/yocto-poky/meta/recipes-gnome/librsvg/librsvg/CVE-2015-7558_3.patch +++ /dev/null @@ -1,223 +0,0 @@ -From a51919f7e1ca9c535390a746fbf6e28c8402dc61 Mon Sep 17 00:00:00 2001 -From: Benjamin Otte <otte@redhat.com> -Date: Wed, 7 Oct 2015 08:45:37 +0200 -Subject: [PATCH] rsvg: Add rsvg_acquire_node() - -This function does proper recursion checks when looking up resources -from URLs and thereby helps avoiding infinite loops when cyclic -references span multiple types of elements. - -Upstream-status: Backport - -https://git.gnome.org/browse/librsvg/commit/rsvg-styles.c?id=a51919f7e1ca9c535390a746fbf6e28c8402dc61 - -CVE: CVE-2015-7558 -Signed-off-by: Armin Kuster <akuster@mvista.com> - ---- - rsvg-base.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ - rsvg-cairo-draw.c | 15 +++++++++++---- - rsvg-cairo-render.c | 1 + - rsvg-filter.c | 9 +++++++-- - rsvg-private.h | 5 +++++ - 5 files changed, 79 insertions(+), 6 deletions(-) - -Index: librsvg-2.40.10/rsvg-base.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-base.c -+++ librsvg-2.40.10/rsvg-base.c -@@ -1236,6 +1236,8 @@ rsvg_drawing_ctx_free (RsvgDrawingCtx * - g_slist_free (handle->drawsub_stack); - - g_slist_free (handle->ptrs); -+ g_warn_if_fail (handle->acquired_nodes == NULL); -+ g_slist_free (handle->acquired_nodes); - - if (handle->base_uri) - g_free (handle->base_uri); -@@ -2018,6 +2020,59 @@ rsvg_push_discrete_layer (RsvgDrawingCtx - ctx->render->push_discrete_layer (ctx); - } - -+/* -+ * rsvg_acquire_node: -+ * @ctx: The drawing context in use -+ * @url: The IRI to lookup -+ * -+ * Use this function when looking up urls to other nodes. This -+ * function does proper recursion checking and thereby avoids -+ * infinite loops. -+ * -+ * Nodes acquired by this function must be released using -+ * rsvg_release_node() in reverse acquiring order. -+ * -+ * Returns: The node referenced by @url or %NULL if the @url -+ * does not reference a node. -+ */ -+RsvgNode * -+rsvg_acquire_node (RsvgDrawingCtx * ctx, const char *url) -+{ -+ RsvgNode *node; -+ -+ node = rsvg_defs_lookup (ctx->defs, url); -+ if (node == NULL) -+ return NULL; -+ -+ if (g_slist_find (ctx->acquired_nodes, node)) -+ return NULL; -+ -+ ctx->acquired_nodes = g_slist_prepend (ctx->acquired_nodes, node); -+ -+ return node; -+} -+ -+/* -+ * rsvg_release_node: -+ * @ctx: The drawing context the node was acquired from -+ * @node: Node to release -+ * -+ * Releases a node previously acquired via rsvg_acquire_node(). -+ * -+ * if @node is %NULL, this function does nothing. -+ */ -+void -+rsvg_release_node (RsvgDrawingCtx * ctx, RsvgNode *node) -+{ -+ if (node == NULL) -+ return; -+ -+ g_return_if_fail (ctx->acquired_nodes != NULL); -+ g_return_if_fail (ctx->acquired_nodes->data == node); -+ -+ ctx->acquired_nodes = g_slist_remove (ctx->acquired_nodes, node); -+} -+ - void - rsvg_render_path (RsvgDrawingCtx * ctx, const cairo_path_t *path) - { -Index: librsvg-2.40.10/rsvg-cairo-draw.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-cairo-draw.c -+++ librsvg-2.40.10/rsvg-cairo-draw.c -@@ -721,7 +721,7 @@ rsvg_cairo_push_render_stack (RsvgDrawin - - if (rsvg_current_state (ctx)->clip_path) { - RsvgNode *node; -- node = rsvg_defs_lookup (ctx->defs, rsvg_current_state (ctx)->clip_path); -+ node = rsvg_acquire_node (ctx, rsvg_current_state (ctx)->clip_path); - if (node && RSVG_NODE_TYPE (node) == RSVG_NODE_TYPE_CLIP_PATH) { - RsvgClipPath *clip_path = (RsvgClipPath *) node; - -@@ -739,6 +739,8 @@ rsvg_cairo_push_render_stack (RsvgDrawin - } - - } -+ -+ rsvg_release_node (ctx, node); - } - - if (state->opacity == 0xFF -@@ -798,10 +800,12 @@ rsvg_cairo_pop_render_stack (RsvgDrawing - - if (rsvg_current_state (ctx)->clip_path) { - RsvgNode *node; -- node = rsvg_defs_lookup (ctx->defs, rsvg_current_state (ctx)->clip_path); -+ node = rsvg_acquire_node (ctx, rsvg_current_state (ctx)->clip_path); - if (node && RSVG_NODE_TYPE (node) == RSVG_NODE_TYPE_CLIP_PATH - && ((RsvgClipPath *) node)->units == objectBoundingBox) - lateclip = (RsvgClipPath *) node; -+ else -+ rsvg_release_node (ctx, node); - } - - if (state->opacity == 0xFF -@@ -831,17 +835,20 @@ rsvg_cairo_pop_render_stack (RsvgDrawing - nest ? 0 : render->offset_x, - nest ? 0 : render->offset_y); - -- if (lateclip) -+ if (lateclip) { - rsvg_cairo_clip (ctx, lateclip, &render->bbox); -+ rsvg_release_node (ctx, (RsvgNode *) lateclip); -+ } - - cairo_set_operator (render->cr, state->comp_op); - - if (state->mask) { - RsvgNode *mask; - -- mask = rsvg_defs_lookup (ctx->defs, state->mask); -+ mask = rsvg_acquire_node (ctx, state->mask); - if (mask && RSVG_NODE_TYPE (mask) == RSVG_NODE_TYPE_MASK) - rsvg_cairo_generate_mask (render->cr, (RsvgMask *) mask, ctx, &render->bbox); -+ rsvg_release_node (ctx, mask); - } else if (state->opacity != 0xFF) - cairo_paint_with_alpha (render->cr, (double) state->opacity / 255.0); - else -Index: librsvg-2.40.10/rsvg-cairo-render.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-cairo-render.c -+++ librsvg-2.40.10/rsvg-cairo-render.c -@@ -155,6 +155,7 @@ rsvg_cairo_new_drawing_ctx (cairo_t * cr - draw->pango_context = NULL; - draw->drawsub_stack = NULL; - draw->ptrs = NULL; -+ draw->acquired_nodes = NULL; - - rsvg_state_push (draw); - state = rsvg_current_state (draw); -Index: librsvg-2.40.10/rsvg-filter.c -=================================================================== ---- librsvg-2.40.10.orig/rsvg-filter.c -+++ librsvg-2.40.10/rsvg-filter.c -@@ -3921,6 +3921,7 @@ rsvg_filter_primitive_image_render_in (R - RsvgDrawingCtx *ctx; - RsvgFilterPrimitiveImage *upself; - RsvgNode *drawable; -+ cairo_surface_t *result; - - ctx = context->ctx; - -@@ -3929,13 +3930,17 @@ rsvg_filter_primitive_image_render_in (R - if (!upself->href) - return NULL; - -- drawable = rsvg_defs_lookup (ctx->defs, upself->href->str); -+ drawable = rsvg_acquire_node (ctx, upself->href->str); - if (!drawable) - return NULL; - - rsvg_current_state (ctx)->affine = context->paffine; - -- return rsvg_get_surface_of_node (ctx, drawable, context->width, context->height); -+ result = rsvg_get_surface_of_node (ctx, drawable, context->width, context->height); -+ -+ rsvg_release_node (ctx, drawable); -+ -+ return result; - } - - static cairo_surface_t * -Index: librsvg-2.40.10/rsvg-private.h -=================================================================== ---- librsvg-2.40.10.orig/rsvg-private.h -+++ librsvg-2.40.10/rsvg-private.h -@@ -200,6 +200,7 @@ struct RsvgDrawingCtx { - GSList *vb_stack; - GSList *drawsub_stack; - GSList *ptrs; -+ GSList *acquired_nodes; - }; - - /*Abstract base class for context for our backends (one as yet)*/ -@@ -360,6 +361,10 @@ void rsvg_pop_discrete_layer (RsvgDra - G_GNUC_INTERNAL - void rsvg_push_discrete_layer (RsvgDrawingCtx * ctx); - G_GNUC_INTERNAL -+RsvgNode *rsvg_acquire_node (RsvgDrawingCtx * ctx, const char *url); -+G_GNUC_INTERNAL -+void rsvg_release_node (RsvgDrawingCtx * ctx, RsvgNode *node); -+G_GNUC_INTERNAL - void rsvg_render_path (RsvgDrawingCtx * ctx, const cairo_path_t *path); - G_GNUC_INTERNAL - void rsvg_render_surface (RsvgDrawingCtx * ctx, cairo_surface_t *surface, diff --git a/yocto-poky/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch b/yocto-poky/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch index e6af481ef..6c23071cd 100644 --- a/yocto-poky/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch +++ b/yocto-poky/meta/recipes-gnome/librsvg/librsvg/gtk-option.patch @@ -1,4 +1,4 @@ -From 1c38d570b33f2b036d4fa47e929bb2b3264e38bd Mon Sep 17 00:00:00 2001 +From 4e0ce3f22d45033a108cbacca3e5ec6728bd44f3 Mon Sep 17 00:00:00 2001 From: Jussi Kukkonen <jussi.kukkonen@intel.com> Date: Tue, 11 Aug 2015 16:25:38 +0300 Subject: [PATCH] configure: add option to enable/disable use of GTK+ @@ -10,19 +10,16 @@ for forcibly controlling whether GTK+ will be used or not. Upstream-Status: Submitted [https://bugzilla.gnome.org/show_bug.cgi?id=712693] Signed-off-by: Ross Burton <ross.burton@intel.com> - -Forward-ported to 2.40.10 - Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com> --- configure.ac | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/configure.ac b/configure.ac -index bf77f3a..ca77de8 100644 +index e61a952..c3aae84 100644 --- a/configure.ac +++ b/configure.ac -@@ -128,17 +128,22 @@ AC_CHECK_FUNCS(strtok_r) +@@ -130,17 +130,22 @@ AC_CHECK_FUNCS(strtok_r) # GTK # =========================================================================== @@ -50,13 +47,13 @@ index bf77f3a..ca77de8 100644 dnl =========================================================================== dnl GDK-Pixbuf SVG loader -@@ -289,6 +294,6 @@ librsvg-$VERSION +@@ -298,6 +303,6 @@ librsvg-$VERSION Build introspectable bindings: ${found_introspection} Build Vala bindings: ${enable_vala} Build GdkPixbuf loader: ${enable_pixbuf_loader} - GTK+ $GTK3_REQUIRED or later: ${have_gtk_3} + GTK+ $GTK3_REQUIRED or later: ${with_gtk_3} - Build miscellaenous tools: ${build_misc_tools} + Build miscellaneous tools: ${build_misc_tools} " -- 2.1.4 diff --git a/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.10.bb b/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.13.bb index cb8a73c40..2ac52f779 100644 --- a/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.10.bb +++ b/yocto-poky/meta/recipes-gnome/librsvg/librsvg_2.40.13.bb @@ -10,21 +10,15 @@ SECTION = "x11/utils" DEPENDS = "cairo gdk-pixbuf glib-2.0 libcroco libxml2 pango" BBCLASSEXTEND = "native" -inherit autotools pkgconfig gnomebase gtk-doc pixbufcache +inherit autotools pkgconfig gnomebase gtk-doc pixbufcache upstream-version-is-even gobject-introspection -SRC_URI += "file://gtk-option.patch \ - file://CVE-2015-7558_1.patch \ - file://CVE-2015-7558_2.patch \ - file://CVE-2015-7558_3.patch \ - " +SRC_URI += "file://gtk-option.patch" -SRC_URI[archive.md5sum] = "fadebe2e799ab159169ee3198415ff85" -SRC_URI[archive.sha256sum] = "965c807438ce90b204e930ff80c92eba1606a2f6fd5ccfd09335c99896dd3479" +SRC_URI[archive.md5sum] = "ad03780e12c56e52474d8edf86976c73" +SRC_URI[archive.sha256sum] = "4d6ea93ec05f5dabe7262d711d246a0a99b2311e215360dd3dcabd6afe3b9804" CACHED_CONFIGUREVARS = "ac_cv_path_GDK_PIXBUF_QUERYLOADERS=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders" -EXTRA_OECONF = "--disable-introspection --disable-vala" - # The older ld (2.22) on the host (Centos 6.5) doesn't have the # -Bsymbolic-functions option, we can disable it for native. EXTRA_OECONF_append_class-native = " --enable-Bsymbolic=auto" @@ -41,8 +35,6 @@ do_install_append() { } PACKAGES =+ "librsvg-gtk rsvg" -FILES_${PN} = "${libdir}/*.so.*" -FILES_${PN}-dbg += "${libdir}/gdk-pixbuf-2.0/*/loaders/.debug" FILES_rsvg = "${bindir}/rsvg* \ ${datadir}/pixmaps/svg-viewer.svg \ ${datadir}/themes" |