diff --git a/u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch b/u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch new file mode 100644 index 0000000..428fb5f --- /dev/null +++ b/u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch @@ -0,0 +1,41 @@ +From: Egbert Eich +Date: Fri May 30 19:08:00 2014 -0400 +Subject: [PATCH]render: Cast color masks to unsigned long before shifting them +Patch-mainline: to be upstreamed +Git-commit: 6ec9a78f9b79668239c3a1519d715cbecf186cef +Git-repo: +References: bnc#876757 +Signed-off-by: Egbert Eich + +The color masks in DirectFormatRec are CARD16. Shifting them may lead +to unexpected results. Cast them to unsigned long to make sure the +shifted value will still fit into that type. + +Signed-off-by: Egbert Eich +--- + render/picture.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/render/picture.c b/render/picture.c +index 2908b76..74369de 100644 +--- a/render/picture.c ++++ b/render/picture.c +@@ -548,12 +548,12 @@ PictureMatchVisual(ScreenPtr pScreen, int depth, VisualPtr pVisual) + return format; + } + else { +- if (format->direct.redMask << format->direct.red == +- pVisual->redMask && +- format->direct.greenMask << format->direct.green == +- pVisual->greenMask && +- format->direct.blueMask << format->direct.blue == +- pVisual->blueMask) { ++ if (((unsigned long)format->direct.redMask) << ++ format->direct.red == pVisual->redMask && ++ ((unsigned long)format->direct.greenMask) << ++ format->direct.green == pVisual->greenMask && ++ ((unsigned long)format->direct.blueMask) << ++ format->direct.blue == pVisual->blueMask) { + return format; + } + } diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 4096a02..cc25e9d 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Fri May 30 23:44:55 UTC 2014 - eich@suse.com + +- u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch: + Make sure result of shift operation fits into type of variable. This + fixes finding the correct visual for RENDER with a BGRA framebuffer + (bnc#876757). + ------------------------------------------------------------------- Wed May 28 11:00:49 UTC 2014 - sndirsch@suse.com diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 0f78729..243d83f 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -152,6 +152,7 @@ Patch106: u_exa-only-draw-valid-trapezoids.patch Patch107: u_arch-Fix-image-and-bitmap-byte-order-for-ppc64le.patch Patch110: u_connection-avoid-crash-when-CloseWellKnownConnections-gets-called-twice.patch Patch111: u_CloseConsole-Don-t-report-FatalError-when-shutting-down.patch +Patch112: u_render-Cast-color-masks-to-unsigned-long-before-shifting-them.patch Patch162: b_cache-xkbcomp-output-for-fast-start-up.patch Patch211: b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch @@ -229,6 +230,7 @@ cp %{SOURCE90} . %patch107 -p1 %patch110 -p1 %patch111 -p1 +%patch112 -p1 ### disabled for now #%patch162 -p1