File u_contrib-gdk-pixbuf-xlib-Fix-rgb888amsb.patch of Package gdk-pixbuf.openSUSE_Leap_42.3_Update

From: Max Staudt <mstaudt@suse.de>
Date: Fri Dec 9 14:26:34 2016 +0100
Subject: [PATCH]contrib/gdk-pixbuf-xlib: Fix rgb888amsb()
Patch-mainline: to be upstreamed
Git-repo: git://git.gnome.org/gdk-pixbuf
References: boo#929462 bsc#1010497
Signed-off-by: Max Staudt <mstaudt@suse.de>

On Little Endian, it wrote memory out of bounds (i.e. when running
inside a little endian client, connecting to a big endian X server).

On Big Endian, it only processed the first 1/4 of the icon.

The effects can be seen when running IceWM. Running native on Big Endian
ppc64 with a Big Endian X11 server, the icon background was 3/4 random:

  https://bugzilla.suse.com/show_bug.cgi?id=929462

This match makes rgb888amsb() behave analogously to rgb888msb().

Signed-off-by: Max Staudt <mstaudt@suse.de>
---
 contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c | 15 ---------------
 1 file changed, 15 deletions(-)

diff --git a/contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c b/contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c
index 972c2be..422fdc8 100644
--- a/contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c
+++ b/contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-drawable.c
@@ -915,13 +915,8 @@ rgb888amsb (XImage *image, guchar *pixels, int rowstride, xlib_colormap *colorma
 	int bpl;

 	guint8 *srow = (guint8 *)image->data, *orow = pixels;
-#ifdef LITTLE
-	guint32 *o;
-	guint32 *s;
-#else
 	guint8 *s;	/* for byte order swapping */
 	guint8 *o;
-#endif

 	d (printf ("32 bit, msb, with alpha\n"));

@@ -931,24 +926,14 @@ rgb888amsb (XImage *image, guchar *pixels, int rowstride, xlib_colormap *colorma

 	/* msb data */
 	for (yy = 0; yy < height; yy++) {
-#ifdef LITTLE
-		s = (guint32 *) srow;
-		o = (guint32 *) orow;
-#else
 		s = srow;
 		o = orow;
-#endif
 		for (xx = 0; xx < width; xx++) {
-#ifdef LITTLE
 			*o++ = s[1];
 			*o++ = s[2];
 			*o++ = s[3];
 			*o++ = 0xff;
 			s += 4;
-#else
-			*o++ = (*s << 8) | 0xff; /* untested */
-			s++;
-#endif
 		}
 		srow += bpl;
 		orow += rowstride;
openSUSE Build Service is sponsored by