diff --git a/Xext/geext.c b/Xext/geext.c index 5009c081af4262bd2ec39e62ad8286f40857dbc3..05988c41a956d41b6b852d76b025d0c159b38daf 100644 --- a/Xext/geext.c +++ b/Xext/geext.c @@ -138,9 +138,15 @@ ProcGEDispatch(ClientPtr client) static int _X_COLD SProcGEDispatch(ClientPtr client) { + GEClientInfoPtr pGEClient = GEGetClient(client); + REQUEST(xGEReq); - if (stuff->ReqType >= GENumberRequests) + + if (pGEClient->major_version >= ARRAY_SIZE(version_requests)) return BadRequest; + if (stuff->ReqType > version_requests[pGEClient->major_version]) + return BadRequest; + return (*SProcGEVector[stuff->ReqType]) (client); } diff --git a/damageext/damageext.c b/damageext/damageext.c index ce490cbf2dcf19f5254b811144955da2b9adf8da..c8194da0735128b8a617559e6fcadf7299e33d90 100644 --- a/damageext/damageext.c +++ b/damageext/damageext.c @@ -561,7 +561,11 @@ static int _X_COLD SProcDamageDispatch(ClientPtr client) { REQUEST(xDamageReq); - if (stuff->damageReqType >= XDamageNumberRequests) + DamageClientPtr pDamageClient = GetDamageClient(client); + + if (pDamageClient->major_version >= ARRAY_SIZE(version_requests)) + return BadRequest; + if (stuff->damageReqType > version_requests[pDamageClient->major_version]) return BadRequest; return (*SProcDamageVector[stuff->damageReqType]) (client); }