open-src/app/lbxproxy/6718029.patch
changeset 456 c1f45bb21b9e
--- /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);