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(-) Index: xorg-server-1.20.5/render/picture.c =================================================================== --- xorg-server-1.20.5.orig/render/picture.c +++ xorg-server-1.20.5/render/picture.c @@ -527,12 +527,12 @@ PictureMatchVisual(ScreenPtr pScreen, in 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; } }