From e720e0874ead2ffc6b8ece8fd7e24f8b6017f237 Mon Sep 17 00:00:00 2001 From: Cyril Brulebois Date: Wed, 1 Dec 2010 14:12:55 +0100 Subject: [PATCH] Fix screen number checks. screenInfo.numScreens is not a valid screen number, they go from 0 to numScreens - 1. Signed-off-by: Cyril Brulebois Reviewed-by: Alex Deucher Signed-off-by: Keith Packard (cherry picked from commit 279ef1ffd787dba2f0d5056849b9cb15d36aa3eb) --- hw/dmx/glxProxy/glxcmds.c | 6 +++--- hw/dmx/glxProxy/glxcmdsswap.c | 2 +- hw/kdrive/ephyr/ephyrdriext.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hw/dmx/glxProxy/glxcmds.c b/hw/dmx/glxProxy/glxcmds.c index 88cf901f7..f7ae11371 100644 --- a/hw/dmx/glxProxy/glxcmds.c +++ b/hw/dmx/glxProxy/glxcmds.c @@ -1536,7 +1536,7 @@ int __glXGetVisualConfigs(__GLXclientState *cl, GLbyte *pc) int i, p; screen = req->screen; - if (screen > screenInfo.numScreens) { + if (screen >= screenInfo.numScreens) { /* The client library must send a valid screen number. */ client->errorValue = screen; return BadValue; @@ -2685,7 +2685,7 @@ int __glXGetFBConfigs(__GLXclientState *cl, GLbyte *pc) int numFBConfigs, i, p; __GLXscreenInfo *pGlxScreen; - if (screen > screenInfo.numScreens) { + if (screen >= screenInfo.numScreens) { /* The client library must send a valid screen number. */ client->errorValue = screen; return BadValue; @@ -3107,7 +3107,7 @@ int __glXCreatePbuffer(__GLXclientState *cl, GLbyte *pc) /* ** Look up screen and FBConfig. */ - if (screen > screenInfo.numScreens) { + if (screen >= screenInfo.numScreens) { /* The client library must send a valid screen number. */ client->errorValue = screen; return BadValue; diff --git a/hw/dmx/glxProxy/glxcmdsswap.c b/hw/dmx/glxProxy/glxcmdsswap.c index 960c60d81..feb70a4cf 100644 --- a/hw/dmx/glxProxy/glxcmdsswap.c +++ b/hw/dmx/glxProxy/glxcmdsswap.c @@ -252,7 +252,7 @@ int __glXSwapGetVisualConfigs(__GLXclientState *cl, GLbyte *pc) __GLX_SWAP_INT(&req->screen); screen = req->screen; - if (screen > screenInfo.numScreens) { + if (screen >= screenInfo.numScreens) { /* The client library must send a valid screen number. */ client->errorValue = screen; return BadValue; diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c index ce584b051..050ce6c9a 100644 --- a/hw/kdrive/ephyr/ephyrdriext.c +++ b/hw/kdrive/ephyr/ephyrdriext.c @@ -473,7 +473,7 @@ EphyrDuplicateVisual (unsigned int a_screen, int i=0 ; EPHYR_LOG ("enter\n") ; - if (a_screen > screenInfo.numScreens) { + if (a_screen >= screenInfo.numScreens) { EPHYR_LOG_ERROR ("bad screen number\n") ; goto out; }