Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
poppler
poppler-CVE-2009-3607.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File poppler-CVE-2009-3607.patch of Package poppler
From c839b706092583f6b12ed3cc634bf5af34b7a2bb Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos <carlosgc@gnome.org> Date: Tue, 20 Oct 2009 08:09:13 +0000 Subject: [glib] Fix CVE-2009-3607 --- diff --git a/glib/poppler-page.cc b/glib/poppler-page.cc index 225c97b..3c0ead1 100644 --- a/glib/poppler-page.cc +++ b/glib/poppler-page.cc @@ -575,28 +575,28 @@ create_surface_from_thumbnail_data (guchar *data, gint rowstride) { guchar *cairo_pixels; + gint cairo_stride; cairo_surface_t *surface; - static cairo_user_data_key_t key; int j; - cairo_pixels = (guchar *)g_malloc (4 * width * height); - surface = cairo_image_surface_create_for_data ((unsigned char *)cairo_pixels, - CAIRO_FORMAT_RGB24, - width, height, 4 * width); - cairo_surface_set_user_data (surface, &key, - cairo_pixels, (cairo_destroy_func_t)g_free); + surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); + if (cairo_surface_status (surface)) + return NULL; + + cairo_pixels = cairo_image_surface_get_data (surface); + cairo_stride = cairo_image_surface_get_stride (surface); for (j = height; j; j--) { guchar *p = data; guchar *q = cairo_pixels; guchar *end = p + 3 * width; - + while (p < end) { #if G_BYTE_ORDER == G_LITTLE_ENDIAN q[0] = p[2]; q[1] = p[1]; q[2] = p[0]; -#else +#else q[1] = p[0]; q[2] = p[1]; q[3] = p[2]; @@ -606,7 +606,7 @@ create_surface_from_thumbnail_data (guchar *data, } data += rowstride; - cairo_pixels += 4 * width; + cairo_pixels += cairo_stride; } return surface; -- cgit v0.8.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor