--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/app/lbxproxy/6718029.patch Thu Jul 03 14:01:10 2008 -0700
@@ -0,0 +1,47 @@
+
+--- di/main.c Sun Jun 15 15:54:22 2008
++++ di/main.c Sun Jun 15 15:55:06 2008
+@@ -80,6 +80,11 @@
+ int argc;
+ char **argv;
+ {
++ /* Temporarily give up gid 0 - ConnectToServer restores when needed
++ * to create pipes/sockets in /tmp/.X11-*
++ */
++ setegid(getgid());
++
+ display = "63";
+
+ ProcessCommandLine (argc, argv);
+
+--- di/wire.c Sun Jun 15 16:04:05 2008
++++ di/wire.c Sun Jun 15 16:06:02 2008
+@@ -1541,7 +1541,13 @@
+ */
+ for (j=0; j < MAXTRANSPORTS; j++)
+ server->listen_fds[j] = -1;
++ if(getegid() == getgid()) {
++ setegid(0);
++ }
+ CreateServerSockets(server->listen_fds);
++ if(getegid() != getgid()) {
++ setegid(getgid());
++ }
+
+ /*
+ * Generate the proxy address and save the host name part
+
+--- di/dispatch.c Sun Jun 15 15:52:10 2008
++++ di/dispatch.c Sun Jun 15 15:52:32 2008
+@@ -449,6 +449,11 @@
+ void (*zeroPadProc)();
+ extern int lbxZeroPad;
+
++ if(MAJOROP == 104) { /* XBell */
++ if ((4 >> 2) != client->req_len)
++ return(BadLength);
++ }
++
+ if (lbxZeroPad &&
+ (MAJOROP < 128) && (zeroPadProc = ZeroPadReqVector[MAJOROP]))
+ (*zeroPadProc) ((void *) stuff);