[Xcb-commit] src

Josh Triplett josh at kemper.freedesktop.org
Tue Nov 21 00:57:57 PST 2006


 src/xcb_auth.c |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+)

New commits:
diff-tree 684b8271a4539527daa15da82ad0cc302fb44727 (from d6abe93b06c421b78e92d76ceb5ca181e3adff31)
Author: Josh Triplett <josh at freedesktop.org>
Date:   Tue Nov 21 00:57:49 2006 -0800

    Support XDM-AUTHORIZATION-1 on IPv6
    
    Commit by Jamey Sharp and Josh Triplett.

diff --git a/src/xcb_auth.c b/src/xcb_auth.c
index a4745bc..afab318 100644
--- a/src/xcb_auth.c
+++ b/src/xcb_auth.c
@@ -177,6 +177,26 @@ static int compute_auth(xcb_auth_info_t 
 	    APPEND(info->data, j, si->sin_port);
 	}
 	break;
+        case AF_INET6:
+            /*block*/ {
+            struct sockaddr_in6 *si6 = (struct sockaddr_in6 *) sockname;
+            if(IN6_IS_ADDR_V4MAPPED(si6->sin6_addr.s6_addr))
+            {
+                APPEND(info->data, j, si6->sin6_addr.s6_addr[12]);
+                APPEND(info->data, j, si6->sin6_port);
+            }
+            else
+            {
+                /* XDM-AUTHORIZATION-1 does not handle IPv6 correctly.  Do the
+                   same thing Xlib does: use all zeroes for the 4-byte address
+                   and 2-byte port number. */
+                long fakeaddr = 0;
+                short fakeport = 0;
+                APPEND(info->data, j, fakeaddr);
+                APPEND(info->data, j, fakeport);
+            }
+        }
+        break;
         case AF_UNIX:
             /*block*/ {
 	    long fakeaddr = htonl(0xffffffff - next_nonce());


More information about the xcb-commit mailing list