summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authortaca <taca>2012-06-12 14:54:23 +0000
committertaca <taca>2012-06-12 14:54:23 +0000
commit4eef26d36e9c11e0026130514c964912ecb175f2 (patch)
tree13696f16c3f3736c495a9b8c793b28423a6c22ce /graphics
parent01c8682f8cd05772279aeb237343c979ad9e5e2a (diff)
downloadpkgsrc-4eef26d36e9c11e0026130514c964912ecb175f2.tar.gz
Add fix for http://secunia.com/advisories/49125/.
Bump PKGREVISION.
Diffstat (limited to 'graphics')
-rw-r--r--graphics/gdk-pixbuf2/Makefile4
-rw-r--r--graphics/gdk-pixbuf2/distinfo3
-rw-r--r--graphics/gdk-pixbuf2/patches/patch-gdk-pixbuf_io-xbm.c113
3 files changed, 117 insertions, 3 deletions
diff --git a/graphics/gdk-pixbuf2/Makefile b/graphics/gdk-pixbuf2/Makefile
index a7c18d09e51..6fc2af96fd5 100644
--- a/graphics/gdk-pixbuf2/Makefile
+++ b/graphics/gdk-pixbuf2/Makefile
@@ -1,9 +1,9 @@
-# $NetBSD: Makefile,v 1.13 2012/06/06 21:37:12 ryoon Exp $
+# $NetBSD: Makefile,v 1.14 2012/06/12 14:54:23 taca Exp $
#
DISTNAME= gdk-pixbuf-2.26.1
PKGNAME= gdk-pixbuf2-2.26.1
-PKGREVISION= 1
+PKGREVISION= 2
CATEGORIES= graphics
MASTER_SITES= ${MASTER_SITE_GNOME:=sources/gdk-pixbuf/2.26/}
EXTRACT_SUFX= .tar.xz
diff --git a/graphics/gdk-pixbuf2/distinfo b/graphics/gdk-pixbuf2/distinfo
index 63b08b5a53a..faa1b0eee74 100644
--- a/graphics/gdk-pixbuf2/distinfo
+++ b/graphics/gdk-pixbuf2/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.10 2012/04/30 14:12:05 drochner Exp $
+$NetBSD: distinfo,v 1.11 2012/06/12 14:54:23 taca Exp $
SHA1 (gdk-pixbuf-2.26.1.tar.xz) = 43e4fe5bd8d19bc7d7b853f71c85c193392cb2f7
RMD160 (gdk-pixbuf-2.26.1.tar.xz) = a541fec932a3d89ad9b4835645989a687c8d56a7
@@ -6,3 +6,4 @@ Size (gdk-pixbuf-2.26.1.tar.xz) = 1167608 bytes
SHA1 (patch-ab) = 4edf5042b355f73c69586a48d21998e483ed1b81
SHA1 (patch-ac) = f8c8ff3175cee6a88938a0aaa081d3bd832a050d
SHA1 (patch-af) = 76ba335564db50762f50987d0c970a01d6463e77
+SHA1 (patch-gdk-pixbuf_io-xbm.c) = eebc5a4c92b44517cf461ed74e6134c756a319ae
diff --git a/graphics/gdk-pixbuf2/patches/patch-gdk-pixbuf_io-xbm.c b/graphics/gdk-pixbuf2/patches/patch-gdk-pixbuf_io-xbm.c
new file mode 100644
index 00000000000..1a6c12f31c4
--- /dev/null
+++ b/graphics/gdk-pixbuf2/patches/patch-gdk-pixbuf_io-xbm.c
@@ -0,0 +1,113 @@
+$NetBSD: patch-gdk-pixbuf_io-xbm.c,v 1.1 2012/06/12 14:54:23 taca Exp $
+
+Fix for http://secunia.com/advisories/49125/.
+
+--- gdk-pixbuf/io-xbm.c.orig 2012-04-14 18:20:25.000000000 +0000
++++ gdk-pixbuf/io-xbm.c
+@@ -149,7 +149,8 @@ read_bitmap_file_data (FILE *fstream,
+ guint *height,
+ guchar **data,
+ int *x_hot,
+- int *y_hot)
++ int *y_hot,
++ GError **error)
+ {
+ guchar *bits = NULL; /* working variable */
+ char line[MAX_SIZE]; /* input line from file */
+@@ -171,11 +172,18 @@ read_bitmap_file_data (FILE *fstream,
+ }
+
+ /* error cleanup and return macro */
+-#define RETURN(code) { g_free (bits); return code; }
++#define RETURN(code, message) { \
++ g_free (bits); \
++ g_set_error_literal (error, \
++ GDK_PIXBUF_ERROR, \
++ GDK_PIXBUF_ERROR_CORRUPT_IMAGE, \
++ message); \
++ return code; \
++ }
+
+ while (fgets (line, MAX_SIZE, fstream)) {
+ if (strlen (line) == MAX_SIZE-1)
+- RETURN (FALSE);
++ RETURN (FALSE, _("XBM file contain too long line"));
+ if (sscanf (line,"#define %s %d",name_and_type,&value) == 2) {
+ if (!(type = strrchr (name_and_type, '_')))
+ type = name_and_type;
+@@ -185,12 +193,12 @@ read_bitmap_file_data (FILE *fstream,
+
+ if (!strcmp ("width", type)) {
+ if (value <= 0)
+- RETURN (FALSE);
++ RETURN (FALSE, _("Negative width in XBM file"));
+ ww = (unsigned int) value;
+ }
+ if (!strcmp ("height", type)) {
+ if (value <= 0)
+- RETURN (FALSE);
++ RETURN (FALSE, _("Negative height in XBM file"));
+ hh = (unsigned int) value;
+ }
+ if (!strcmp ("hot", type)) {
+@@ -227,7 +235,7 @@ read_bitmap_file_data (FILE *fstream,
+ continue;
+
+ if (!ww || !hh)
+- RETURN (FALSE);
++ RETURN (FALSE, _("Width or height of XBM image is zero"));
+
+ if ((ww % 16) && ((ww % 16) < 9) && version10p)
+ padding = 1;
+@@ -237,8 +245,9 @@ read_bitmap_file_data (FILE *fstream,
+ bytes_per_line = (ww+7)/8 + padding;
+
+ size = bytes_per_line * hh;
+- if (size / bytes_per_line != hh) /* overflow */
+- RETURN (FALSE);
++ if (size / bytes_per_line != hh) { /* overflow */
++ RETURN (FALSE, _("Dimensions of XBM image too large"));
++ }
+ bits = g_malloc (size);
+
+ if (version10p) {
+@@ -247,7 +256,7 @@ read_bitmap_file_data (FILE *fstream,
+
+ for (bytes = 0, ptr = bits; bytes < size; (bytes += 2)) {
+ if ((value = next_int (fstream)) < 0)
+- RETURN (FALSE);
++ RETURN (FALSE, _("Unexpected end of XBM file"));
+ *(ptr++) = value;
+ if (!padding || ((bytes+2) % bytes_per_line))
+ *(ptr++) = value >> 8;
+@@ -258,7 +267,7 @@ read_bitmap_file_data (FILE *fstream,
+
+ for (bytes = 0, ptr = bits; bytes < size; bytes++, ptr++) {
+ if ((value = next_int (fstream)) < 0)
+- RETURN (FALSE);
++ RETURN (FALSE, _("Unexpected end of XBM file"));
+ *ptr=value;
+ }
+ }
+@@ -266,7 +275,7 @@ read_bitmap_file_data (FILE *fstream,
+ }
+
+ if (!bits)
+- RETURN (FALSE);
++ RETURN (FALSE, _("Insufficient memory to open XBM file"));
+
+ *data = bits;
+ *width = ww;
+@@ -297,11 +306,7 @@ gdk_pixbuf__xbm_image_load_real (FILE
+
+ GdkPixbuf *pixbuf;
+
+- if (!read_bitmap_file_data (f, &w, &h, &data, &x_hot, &y_hot)) {
+- g_set_error_literal (error,
+- GDK_PIXBUF_ERROR,
+- GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
+- _("Invalid XBM file"));
++ if (!read_bitmap_file_data (f, &w, &h, &data, &x_hot, &y_hot, error)) {
+ return NULL;
+ }
+