summaryrefslogtreecommitdiff
path: root/src/cairo-clip-boxes.c
diff options
context:
space:
mode:
authorUli Schlachter <psychon@znc.in>2014-03-06 09:45:08 +0100
committerUli Schlachter <psychon@znc.in>2014-03-06 09:51:56 +0100
commited175b2a2bebb6def85133257bc11a875d13b0dd (patch)
tree3043d683ccddc1523a870dfafef0cc13ee1a412b /src/cairo-clip-boxes.c
parent3b261bea7d8e8094ff3899aefab6bbc8628a3585 (diff)
downloadcairo-ed175b2a2bebb6def85133257bc11a875d13b0dd.tar.gz
clip: Fix handling of special all-clipped cairo_clip_t
_cairo_clip_intersect_box() wasn't checking if it was called with the special, read-only all-clipped clip and thus could have ended up writing to read-only memory. References: https://bugs.freedesktop.org/show_bug.cgi?id=75819 Signed-off-by: Uli Schlachter <psychon@znc.in>
Diffstat (limited to 'src/cairo-clip-boxes.c')
-rw-r--r--src/cairo-clip-boxes.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cairo-clip-boxes.c b/src/cairo-clip-boxes.c
index 352654f5f..7bcbeb191 100644
--- a/src/cairo-clip-boxes.c
+++ b/src/cairo-clip-boxes.c
@@ -258,6 +258,9 @@ _cairo_clip_intersect_box (cairo_clip_t *clip,
{
cairo_rectangle_int_t r;
+ if (_cairo_clip_is_all_clipped (clip))
+ return clip;
+
_cairo_box_round_to_rectangle (box, &r);
if (r.width == 0 || r.height == 0)
return _cairo_clip_set_all_clipped (clip);