[PATCH 2/2] Xi: Limit the reported Xi version to what the server supports.
Keith Packard
keithp at keithp.com
Tue Jul 30 10:44:42 PDT 2013
Make sure the server never reports a version higher than what it
supports.
Signed-off-by: Keith Packard <keithp at keithp.com>
---
Xi/xiqueryversion.c | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/Xi/xiqueryversion.c b/Xi/xiqueryversion.c
index 6c7b9c0..d5e5347 100644
--- a/Xi/xiqueryversion.c
+++ b/Xi/xiqueryversion.c
@@ -70,12 +70,24 @@ ProcXIQueryVersion(ClientPtr client)
pXIClient = dixLookupPrivate(&client->devPrivates, XIClientPrivateKey);
+ /* Compute the minimum of the client requested and server supported versions */
+
+ if (version_compare(XIVersion.major_version, XIVersion.minor_version,
+ stuff->major_version, stuff->minor_version) > 0) {
+ major = stuff->major_version;
+ minor = stuff->minor_version;
+ }
+ else {
+ major = XIVersion.major_version;
+ minor = XIVersion.minor_version;
+ }
+
if (pXIClient->major_version) {
/* Check to see if the client has only ever asked
* for version 2.2 or higher
*/
- if (version_compare(stuff->major_version, stuff->minor_version, 2, 2) >= 0 &&
+ if (version_compare(major, minor, 2, 2) >= 0 &&
version_compare(pXIClient->major_version, pXIClient->minor_version, 2, 2) >= 0)
{
@@ -84,16 +96,14 @@ ProcXIQueryVersion(ClientPtr client)
* version to the client but leave the server internal
* version set to the highest requested value
*/
- major = stuff->major_version;
- minor = stuff->minor_version;
- if (version_compare(stuff->major_version, stuff->minor_version,
+ if (version_compare(major, minor,
pXIClient->major_version, pXIClient->minor_version) > 0)
{
- pXIClient->major_version = stuff->major_version;
- pXIClient->minor_version = stuff->minor_version;
+ pXIClient->major_version = major;
+ pXIClient->minor_version = minor;
}
} else {
- if (version_compare(stuff->major_version, stuff->minor_version,
+ if (version_compare(major, minor,
pXIClient->major_version, pXIClient->minor_version) < 0) {
client->errorValue = stuff->major_version;
@@ -103,15 +113,6 @@ ProcXIQueryVersion(ClientPtr client)
minor = pXIClient->minor_version;
}
} else {
- if (version_compare(XIVersion.major_version, XIVersion.minor_version,
- stuff->major_version, stuff->minor_version) > 0) {
- major = stuff->major_version;
- minor = stuff->minor_version;
- }
- else {
- major = XIVersion.major_version;
- minor = XIVersion.minor_version;
- }
pXIClient->major_version = major;
pXIClient->minor_version = minor;
--
1.8.3.2
More information about the xorg-devel
mailing list