From 79d388e0ecf8f6d2eb0e091eacf97bd1ed367f4b Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 10 Apr 2012 21:40:05 -0700 Subject: [PATCH] Fix boundary overflow. --- protocols/rdp/src/rdp_glyph.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/protocols/rdp/src/rdp_glyph.c b/protocols/rdp/src/rdp_glyph.c index 603a1048..951d8ecf 100644 --- a/protocols/rdp/src/rdp_glyph.c +++ b/protocols/rdp/src/rdp_glyph.c @@ -207,6 +207,14 @@ void guac_rdp_glyph_enddraw(rdpContext* context, cairo_surface_t* glyph_surface = guac_client_data->glyph_surface; int stride = cairo_image_surface_get_stride(glyph_surface); + /* Calculate bounds */ + int max_width = cairo_image_surface_get_width(glyph_surface) - x; + int max_height = cairo_image_surface_get_height(glyph_surface) - y; + + /* Ensure dimensions of glyph do not exceed bounds */ + if (width > max_width) width = max_width; + if (height > max_height) height = max_height; + /* Ensure data is ready */ cairo_surface_flush(glyph_surface);