[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg-server: Changes to 'debian-unstable'



 debian/changelog                          |    2 
 debian/patches/52_xevie-swap-replies.diff |  110 ++++++++++++++++++++++++++++++
 debian/patches/series                     |    1 
 3 files changed, 113 insertions(+)

New commits:
commit 797126dbf003df5474c3bf6eb0dab7be7e7f6a88
Author: Julien Cristau <jcristau@debian.org>
Date:   Wed Sep 3 14:59:13 2008 +0200

    Xevie: swap replies if necessary
    
    If the client has a different endianness we need to byteswap replies before
    sending them.

diff --git a/debian/changelog b/debian/changelog
index 5842698..22c67ab 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,8 @@ xorg-server (2:1.4.2-6) UNRELEASED; urgency=low
 
   * Xevie: always set rep.length to 0 (closes: #497337).  Thanks, Thorvald
     Natvig!
+  * Xevie: swap replies if necessary, to not confuse clients with a different
+    endianness.
 
  -- Julien Cristau <jcristau@debian.org>  Mon, 01 Sep 2008 19:21:18 +0200
 
diff --git a/debian/patches/52_xevie-swap-replies.diff b/debian/patches/52_xevie-swap-replies.diff
new file mode 100644
index 0000000..0c2fabf
--- /dev/null
+++ b/debian/patches/52_xevie-swap-replies.diff
@@ -0,0 +1,110 @@
+From b5cdcfa55c399e83d51242e93d4f25d8bc4fec1f Mon Sep 17 00:00:00 2001
+From: Julien Cristau <jcristau@debian.org>
+Date: Mon, 1 Sep 2008 19:45:30 +0200
+Subject: [PATCH] Xevie: swap replies as necessary
+
+---
+ Xext/xevie.c |   27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+Index: xorg-server/Xext/xevie.c
+===================================================================
+--- xorg-server.orig/Xext/xevie.c
++++ xorg-server/Xext/xevie.c
+@@ -167,6 +167,7 @@
+ int ProcQueryVersion (register ClientPtr client)
+ {
+     xXevieQueryVersionReply rep;
++    int n;
+ 
+     REQUEST_SIZE_MATCH (xXevieQueryVersionReq);
+     rep.type = X_Reply;
+@@ -174,6 +175,12 @@
+     rep.sequence_number = client->sequence;
+     rep.server_major_version = XEVIE_MAJOR_VERSION;
+     rep.server_minor_version = XEVIE_MINOR_VERSION;
++    if (client->swapped) {
++	swaps(&rep.sequence_number, n);
++	swapl(&rep.length, n);
++	swaps(&rep.server_major_version, n);
++	swaps(&rep.server_minor_version, n);
++    }
+     WriteToClient (client, sizeof (xXevieQueryVersionReply), (char *)&rep);
+     return client->noClientException;
+ }
+@@ -182,6 +189,7 @@
+ int ProcStart (register ClientPtr client)
+ {
+     xXevieStartReply rep;
++    int n;
+ 
+     REQUEST_SIZE_MATCH (xXevieStartReq);
+     rep.pad1 = 0;
+@@ -216,6 +224,10 @@
+     rep.length = 0;
+     rep.type = X_Reply;
+     rep.sequence_number = client->sequence;
++    if (client->swapped) {
++	swaps(&rep.sequence_number, n);
++	swapl(&rep.length, n);
++    }
+     WriteToClient (client, sizeof (xXevieStartReply), (char *)&rep);
+     return client->noClientException;
+ }
+@@ -224,6 +236,7 @@
+ int ProcEnd (register ClientPtr client)
+ {
+     xXevieEndReply rep;
++    int n;
+ 
+     if (xevieFlag) {
+         if (client->index != xevieClientIndex)
+@@ -236,6 +249,10 @@
+     rep.length = 0;
+     rep.type = X_Reply;
+     rep.sequence_number = client->sequence;
++    if (client->swapped) {
++	swaps(&rep.sequence_number, n);
++	swapl(&rep.length, n);
++    }
+     WriteToClient (client, sizeof (xXevieEndReply), (char *)&rep);
+     return client->noClientException;
+ }
+@@ -247,6 +264,7 @@
+     xXevieSendReply rep;
+     xEvent *xE;
+     static unsigned char lastDetail = 0, lastType = 0;
++    int n;
+ 
+     if (client->index != xevieClientIndex)
+         return BadAccess;
+@@ -255,6 +273,10 @@
+     rep.length = 0;
+     rep.type = X_Reply;
+     rep.sequence_number = client->sequence;
++    if (client->swapped) {
++	swaps(&rep.sequence_number, n);
++	swapl(&rep.length, n);
++    }
+     WriteToClient (client, sizeof (xXevieSendReply), (char *)&rep);
+ 
+     switch(xE->u.u.type) {
+@@ -292,6 +314,7 @@
+ {
+     REQUEST (xXevieSelectInputReq);
+     xXevieSelectInputReply rep;
++    int n;
+ 
+     if (client->index != xevieClientIndex)
+         return BadAccess;
+@@ -300,6 +323,10 @@
+     rep.length = 0;
+     rep.type = X_Reply;
+     rep.sequence_number = client->sequence;
++    if (client->swapped) {
++	swaps(&rep.sequence_number, n);
++	swapl(&rep.length, n);
++    }
+     WriteToClient (client, sizeof (xXevieSelectInputReply), (char *)&rep);
+     return client->noClientException;
+ }
diff --git a/debian/patches/series b/debian/patches/series
index 4d71c53..55ff4fa 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -25,6 +25,7 @@
 49_x86emu_int1a_fix.diff
 50_Make-RandRQueryVersion-return-1.1-for-swapped-client.patch
 51_xevie-length.diff
+52_xevie-swap-replies.diff
 91_ttf2pt1
 91_ttf2pt1_updates
 92_xprint-security-holes-fix.patch


Reply to: