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: