Module Name:    xsrc
Committed By:   martin
Date:           Wed Mar  8 14:47:24 UTC 2017

Modified Files:
        xsrc/external/mit/xorg-server/dist [netbsd-6]: configure.ac
        xsrc/external/mit/xorg-server/dist/include [netbsd-6]: dix-config.h.in
            os.h
        xsrc/external/mit/xorg-server/dist/os [netbsd-6]: auth.c mitauth.c
            osdep.h rpcauth.c xdmauth.c
        xsrc/external/mit/xorg-server/include [netbsd-6]: dix-config.h
        xsrc/xfree/xc/programs/Xserver/include [netbsd-6]: os.h
        xsrc/xfree/xc/programs/Xserver/os [netbsd-6]: auth.c mitauth.c osdep.h
            rpcauth.c xdmauth.c
Added Files:
        xsrc/external/mit/xorg-server/dist/os [netbsd-6]: timingsafe_memcmp.c
        xsrc/xfree/xc/programs/Xserver/os [netbsd-6]: timingsafe_memcmp.c

Log Message:
xsrc/external/mit/xorg-server.old/dist/configure.ac     1.2 (patch)
xsrc/external/mit/xorg-server.old/dist/include/dix-config.h.in 1.2 (patch)
xsrc/external/mit/xorg-server.old/dist/include/dix-config.h.in 1.3 (patch)
xsrc/external/mit/xorg-server.old/dist/include/os.h     1.2 (patch)
xsrc/external/mit/xorg-server.old/dist/os/auth.c        1.2 (patch)
xsrc/external/mit/xorg-server.old/dist/os/auth.c        1.3 (patch)
xsrc/external/mit/xorg-server.old/dist/os/mitauth.c     1.2 (patch)
xsrc/external/mit/xorg-server.old/dist/os/mitauth.c     1.3 (patch)
xsrc/external/mit/xorg-server.old/dist/os/osdep.h       1.2 (patch)
xsrc/external/mit/xorg-server.old/dist/os/rpcauth.c     1.2 (patch)
xsrc/external/mit/xorg-server.old/dist/os/timingsafe_memcmp.c 1.1 (patch)
xsrc/external/mit/xorg-server.old/dist/os/xdmauth.c     1.2 (patch)
xsrc/external/mit/xorg-server.old/include/dix-config.h 1.3 (patch)
xsrc/external/mit/xorg-server.old/include/dix-config.h 1.4 (patch)
xsrc/external/mit/xorg-server/dist/configure.ac 1.4 (patch)
xsrc/external/mit/xorg-server/dist/configure.ac 1.5 (patch)
xsrc/external/mit/xorg-server/dist/include/dix-config.h.in 1.2 (patch)
xsrc/external/mit/xorg-server/dist/include/dix-config.h.in 1.3 (patch)
xsrc/external/mit/xorg-server/dist/include/os.h 1.8 (patch)
xsrc/external/mit/xorg-server/dist/os/auth.c            1.2 (patch)
xsrc/external/mit/xorg-server/dist/os/auth.c            1.3 (patch)
xsrc/external/mit/xorg-server/dist/os/mitauth.c 1.2 (patch)
xsrc/external/mit/xorg-server/dist/os/mitauth.c 1.3 (patch)
xsrc/external/mit/xorg-server/dist/os/osdep.h   1.2 (patch)
xsrc/external/mit/xorg-server/dist/os/rpcauth.c 1.4 (patch)
xsrc/external/mit/xorg-server/dist/os/timingsafe_memcmp.c 1.1 (patch)
xsrc/external/mit/xorg-server/dist/os/xdmauth.c 1.2 (patch)
xsrc/external/mit/xorg-server/include/dix-config.h      1.26 (patch)
xsrc/external/mit/xorg-server/include/dix-config.h      1.27 (patch)

        Apply upstream fixes for generation and comparision of
        MIT-MAGIC-COOKIES, fixing CVE-2017-2624
        [mrg, ticket #1381]


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.8.2.1 -r1.1.1.8.2.2 \
    xsrc/external/mit/xorg-server/dist/configure.ac
cvs rdiff -u -r1.1.1.4 -r1.1.1.4.2.1 \
    xsrc/external/mit/xorg-server/dist/include/dix-config.h.in
cvs rdiff -u -r1.6 -r1.6.2.1 xsrc/external/mit/xorg-server/dist/include/os.h
cvs rdiff -u -r1.1.1.3 -r1.1.1.3.2.1 \
    xsrc/external/mit/xorg-server/dist/os/auth.c \
    xsrc/external/mit/xorg-server/dist/os/xdmauth.c
cvs rdiff -u -r1.1.1.2 -r1.1.1.2.2.1 \
    xsrc/external/mit/xorg-server/dist/os/mitauth.c
cvs rdiff -u -r1.1.1.4 -r1.1.1.4.2.1 \
    xsrc/external/mit/xorg-server/dist/os/osdep.h
cvs rdiff -u -r1.1.1.3.2.1 -r1.1.1.3.2.2 \
    xsrc/external/mit/xorg-server/dist/os/rpcauth.c
cvs rdiff -u -r0 -r1.1.6.2 \
    xsrc/external/mit/xorg-server/dist/os/timingsafe_memcmp.c
cvs rdiff -u -r1.19 -r1.19.2.1 \
    xsrc/external/mit/xorg-server/include/dix-config.h
cvs rdiff -u -r1.5 -r1.5.14.1 xsrc/xfree/xc/programs/Xserver/include/os.h
cvs rdiff -u -r1.4 -r1.4.26.1 xsrc/xfree/xc/programs/Xserver/os/auth.c
cvs rdiff -u -r1.1.1.4 -r1.1.1.4.28.1 \
    xsrc/xfree/xc/programs/Xserver/os/mitauth.c
cvs rdiff -u -r1.1.1.7 -r1.1.1.7.14.1 \
    xsrc/xfree/xc/programs/Xserver/os/osdep.h
cvs rdiff -u -r1.1.1.5.26.1 -r1.1.1.5.26.2 \
    xsrc/xfree/xc/programs/Xserver/os/rpcauth.c
cvs rdiff -u -r0 -r1.1.6.2 \
    xsrc/xfree/xc/programs/Xserver/os/timingsafe_memcmp.c
cvs rdiff -u -r1.1.1.6 -r1.1.1.6.14.1 \
    xsrc/xfree/xc/programs/Xserver/os/xdmauth.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xorg-server/dist/configure.ac
diff -u xsrc/external/mit/xorg-server/dist/configure.ac:1.1.1.8.2.1 xsrc/external/mit/xorg-server/dist/configure.ac:1.1.1.8.2.2
--- xsrc/external/mit/xorg-server/dist/configure.ac:1.1.1.8.2.1	Tue Dec  9 19:43:12 2014
+++ xsrc/external/mit/xorg-server/dist/configure.ac	Wed Mar  8 14:47:24 2017
@@ -220,6 +220,8 @@ AC_CHECK_FUNC([strlcpy], AC_DEFINE(HAS_S
 
 AM_CONDITIONAL(NEED_VSNPRINTF, [test x$HAVE_VSNPRINTF = xno])
 
+AC_CHECK_LIB([bsd], [arc4random_buf])
+
 dnl Check for mmap support for Xvfb
 AC_CHECK_FUNC([mmap], AC_DEFINE(HAS_MMAP, 1, [Have the 'mmap' function.]))
 

Index: xsrc/external/mit/xorg-server/dist/include/dix-config.h.in
diff -u xsrc/external/mit/xorg-server/dist/include/dix-config.h.in:1.1.1.4 xsrc/external/mit/xorg-server/dist/include/dix-config.h.in:1.1.1.4.2.1
--- xsrc/external/mit/xorg-server/dist/include/dix-config.h.in:1.1.1.4	Tue Aug  2 06:57:02 2011
+++ xsrc/external/mit/xorg-server/dist/include/dix-config.h.in	Wed Mar  8 14:47:24 2017
@@ -133,6 +133,9 @@
 /* Build a standalone xpbproxy */
 #undef STANDALONE_XPBPROXY
 
+/* Define to 1 if you have the `bsd' library (-lbsd). */
+#undef HAVE_LIBBSD
+
 /* Define to 1 if you have the `m' library (-lm). */
 #undef HAVE_LIBM
 
@@ -160,6 +163,9 @@
 /* Define to 1 if you have the <rpcsvc/dbm.h> header file. */
 #undef HAVE_RPCSVC_DBM_H
 
+/* Define to 1 if you have the `arc4random_buf' function. */
+#undef HAVE_ARC4RANDOM_BUF
+
 /* Define to use libc SHA1 functions */
 #undef HAVE_SHA1_IN_LIBC
 
@@ -228,6 +234,9 @@
 /* Define to 1 if you have the <sys/vm86.h> header file. */
 #undef HAVE_SYS_VM86_H
 
+/* Define to 1 if you have the `timingsafe_memcmp' function. */
+#undef HAVE_TIMINGSAFE_MEMCMP
+
 /* Define to 1 if you have the <tslib.h> header file. */
 #undef HAVE_TSLIB_H
 

Index: xsrc/external/mit/xorg-server/dist/include/os.h
diff -u xsrc/external/mit/xorg-server/dist/include/os.h:1.6 xsrc/external/mit/xorg-server/dist/include/os.h:1.6.2.1
--- xsrc/external/mit/xorg-server/dist/include/os.h:1.6	Tue Aug  2 07:15:06 2011
+++ xsrc/external/mit/xorg-server/dist/include/os.h	Wed Mar  8 14:47:24 2017
@@ -495,6 +495,11 @@ extern _X_EXPORT size_t strlcpy(char *ds
 extern _X_EXPORT size_t strlcat(char *dst, const char *src, size_t siz);
 #endif
 
+#ifndef HAVE_TIMINGSAFE_MEMCMP
+extern _X_EXPORT int
+timingsafe_memcmp(const void *b1, const void *b2, size_t len);
+#endif
+
 /* Logging. */
 typedef enum _LogParameter {
     XLOG_FLUSH,

Index: xsrc/external/mit/xorg-server/dist/os/auth.c
diff -u xsrc/external/mit/xorg-server/dist/os/auth.c:1.1.1.3 xsrc/external/mit/xorg-server/dist/os/auth.c:1.1.1.3.2.1
--- xsrc/external/mit/xorg-server/dist/os/auth.c:1.1.1.3	Tue Nov 23 05:22:09 2010
+++ xsrc/external/mit/xorg-server/dist/os/auth.c	Wed Mar  8 14:47:24 2017
@@ -45,6 +45,9 @@ from The Open Group.
 #ifdef WIN32
 #include    <X11/Xw32defs.h>
 #endif
+#ifdef HAVE_LIBBSD
+#include   <bsd/stdlib.h>       /* for arc4random_buf() */
+#endif
 
 struct protocol {
     unsigned short   name_length;
@@ -52,7 +55,6 @@ struct protocol {
     AuthAddCFunc	Add;	/* new authorization data */
     AuthCheckFunc	Check;	/* verify client authorization data */
     AuthRstCFunc	Reset;	/* delete all authorization data entries */
-    AuthToIDFunc	ToID;	/* convert cookie to ID */
     AuthFromIDFunc	FromID;	/* convert ID to cookie */
     AuthRemCFunc	Remove;	/* remove a specific cookie */
 #ifdef XCSECURITY
@@ -63,7 +65,7 @@ struct protocol {
 static struct protocol   protocols[] = {
 {   (unsigned short) 18,    "MIT-MAGIC-COOKIE-1",
 		MitAddCookie,	MitCheckCookie,	MitResetCookie,
-		MitToID,	MitFromID,	MitRemoveCookie,
+		MitFromID,	MitRemoveCookie,
 #ifdef XCSECURITY
 		MitGenerateCookie
 #endif
@@ -71,7 +73,7 @@ static struct protocol   protocols[] = {
 #ifdef HASXDMAUTH
 {   (unsigned short) 19,    "XDM-AUTHORIZATION-1",
 		XdmAddCookie,	XdmCheckCookie,	XdmResetCookie,
-		XdmToID,	XdmFromID,	XdmRemoveCookie,
+		XdmFromID,	XdmRemoveCookie,
 #ifdef XCSECURITY
 		NULL
 #endif
@@ -80,7 +82,7 @@ static struct protocol   protocols[] = {
 #ifdef SECURE_RPC
 {   (unsigned short) 9,    "SUN-DES-1",
 		SecureRPCAdd,	SecureRPCCheck,	SecureRPCReset,
-		SecureRPCToID,	SecureRPCFromID,SecureRPCRemove,
+		SecureRPCFromID,SecureRPCRemove,
 #ifdef XCSECURITY
 		NULL
 #endif
@@ -318,11 +320,15 @@ GenerateAuthorization(
 void
 GenerateRandomData (int len, char *buf)
 {
+#ifdef HAVE_ARC4RANDOMBUF
+    arc4random_buf(buf, len);
+#else
     int fd;
 
     fd = open("/dev/urandom", O_RDONLY);
     read(fd, buf, len);
     close(fd);
+#endif
 }
 
 #endif /* XCSECURITY */
Index: xsrc/external/mit/xorg-server/dist/os/xdmauth.c
diff -u xsrc/external/mit/xorg-server/dist/os/xdmauth.c:1.1.1.3 xsrc/external/mit/xorg-server/dist/os/xdmauth.c:1.1.1.3.2.1
--- xsrc/external/mit/xorg-server/dist/os/xdmauth.c:1.1.1.3	Tue Nov 23 05:22:10 2010
+++ xsrc/external/mit/xorg-server/dist/os/xdmauth.c	Wed Mar  8 14:47:24 2017
@@ -423,31 +423,6 @@ XdmResetCookie (void)
     return 1;
 }
 
-XID
-XdmToID (unsigned short cookie_length, char *cookie)
-{
-    XdmAuthorizationPtr	auth;
-    XdmClientAuthPtr	client;
-    unsigned char	*plain;
-
-    plain = malloc(cookie_length);
-    if (!plain)
-	return (XID) -1;
-    for (auth = xdmAuth; auth; auth=auth->next) {
-	XdmcpUnwrap ((unsigned char *)cookie, (unsigned char *)&auth->key, plain, cookie_length);
-	if ((client = XdmAuthorizationValidate (plain, cookie_length, &auth->rho, NULL, NULL)) != NULL)
-	{
-	    free(client);
-	    free(cookie);
-	    free(plain);
-	    return auth->id;
-	}
-    }
-    free(cookie);
-    free(plain);
-    return (XID) -1;
-}
-
 int
 XdmFromID (XID id, unsigned short *data_lenp, char **datap)
 {

Index: xsrc/external/mit/xorg-server/dist/os/mitauth.c
diff -u xsrc/external/mit/xorg-server/dist/os/mitauth.c:1.1.1.2 xsrc/external/mit/xorg-server/dist/os/mitauth.c:1.1.1.2.2.1
--- xsrc/external/mit/xorg-server/dist/os/mitauth.c:1.1.1.2	Tue Nov 23 05:22:09 2010
+++ xsrc/external/mit/xorg-server/dist/os/mitauth.c	Wed Mar  8 14:47:24 2017
@@ -82,7 +82,7 @@ MitCheckCookie (
 
     for (auth = mit_auth; auth; auth=auth->next) {
         if (data_length == auth->len &&
-	   memcmp (data, auth->data, (int) data_length) == 0)
+	   timingsafe_memcmp(data, auth->data, (int) data_length) == 0)
 	    return auth->id;
     }
     *reason = "Invalid MIT-MAGIC-COOKIE-1 key";
@@ -103,21 +103,6 @@ MitResetCookie (void)
     return 0;
 }
 
-XID
-MitToID (
-	unsigned short	data_length,
-	char		*data)
-{
-    struct auth	*auth;
-
-    for (auth = mit_auth; auth; auth=auth->next) {
-	if (data_length == auth->len &&
-	    memcmp (data, auth->data, data_length) == 0)
-	    return auth->id;
-    }
-    return (XID) -1;
-}
-
 int
 MitFromID (
 	XID		id,

Index: xsrc/external/mit/xorg-server/dist/os/osdep.h
diff -u xsrc/external/mit/xorg-server/dist/os/osdep.h:1.1.1.4 xsrc/external/mit/xorg-server/dist/os/osdep.h:1.1.1.4.2.1
--- xsrc/external/mit/xorg-server/dist/os/osdep.h:1.1.1.4	Tue Aug  2 06:57:04 2011
+++ xsrc/external/mit/xorg-server/dist/os/osdep.h	Wed Mar  8 14:47:24 2017
@@ -158,9 +158,6 @@ typedef int (*AuthRemCFunc) (AuthRemCArg
 #define AuthRstCArgs void
 typedef int (*AuthRstCFunc) (AuthRstCArgs);
 
-#define AuthToIDArgs unsigned short data_length, char *data
-typedef XID (*AuthToIDFunc) (AuthToIDArgs);
-
 typedef void (*OsCloseFunc)(ClientPtr);
 
 typedef int (*OsFlushFunc)(ClientPtr who, struct _osComm * oc, char* extraBuf, int extraCount);
@@ -227,7 +224,6 @@ extern void GenerateRandomData (int len,
 /* in mitauth.c */
 extern XID  MitCheckCookie    (AuthCheckArgs);
 extern XID  MitGenerateCookie (AuthGenCArgs);
-extern XID  MitToID           (AuthToIDArgs);
 extern int  MitAddCookie      (AuthAddCArgs);
 extern int  MitFromID         (AuthFromIDArgs);
 extern int  MitRemoveCookie   (AuthRemCArgs);
@@ -236,7 +232,6 @@ extern int  MitResetCookie    (AuthRstCA
 /* in xdmauth.c */
 #ifdef HASXDMAUTH
 extern XID  XdmCheckCookie    (AuthCheckArgs);
-extern XID  XdmToID           (AuthToIDArgs);
 extern int  XdmAddCookie      (AuthAddCArgs);
 extern int  XdmFromID         (AuthFromIDArgs);
 extern int  XdmRemoveCookie   (AuthRemCArgs);
@@ -247,7 +242,6 @@ extern int  XdmResetCookie    (AuthRstCA
 #ifdef SECURE_RPC
 extern void SecureRPCInit     (AuthInitArgs);
 extern XID  SecureRPCCheck    (AuthCheckArgs);
-extern XID  SecureRPCToID     (AuthToIDArgs);
 extern int  SecureRPCAdd      (AuthAddCArgs);
 extern int  SecureRPCFromID   (AuthFromIDArgs);
 extern int  SecureRPCRemove   (AuthRemCArgs);

Index: xsrc/external/mit/xorg-server/dist/os/rpcauth.c
diff -u xsrc/external/mit/xorg-server/dist/os/rpcauth.c:1.1.1.3.2.1 xsrc/external/mit/xorg-server/dist/os/rpcauth.c:1.1.1.3.2.2
--- xsrc/external/mit/xorg-server/dist/os/rpcauth.c:1.1.1.3.2.1	Tue Dec  9 19:43:13 2014
+++ xsrc/external/mit/xorg-server/dist/os/rpcauth.c	Wed Mar  8 14:47:24 2017
@@ -177,12 +177,6 @@ SecureRPCReset (void)
     return 1;
 }
 
-_X_HIDDEN XID
-SecureRPCToID (unsigned short data_length, char *data)
-{
-    return rpc_id;
-}
-
 _X_HIDDEN int
 SecureRPCFromID (XID id, unsigned short *data_lenp, char **datap)
 {

Index: xsrc/external/mit/xorg-server/include/dix-config.h
diff -u xsrc/external/mit/xorg-server/include/dix-config.h:1.19 xsrc/external/mit/xorg-server/include/dix-config.h:1.19.2.1
--- xsrc/external/mit/xorg-server/include/dix-config.h:1.19	Tue Aug  2 22:45:52 2011
+++ xsrc/external/mit/xorg-server/include/dix-config.h	Wed Mar  8 14:47:24 2017
@@ -134,6 +134,9 @@
 /* Build a standalone xpbproxy */
 /* #undef STANDALONE_XPBPROXY */
 
+/* Define to 1 if you have the `bsd' library (-lbsd). */
+/* #undef HAVE_LIBBSD */
+
 /* Define to 1 if you have the `m' library (-lm). */
 #define HAVE_LIBM 1
 
@@ -161,6 +164,9 @@
 /* Define to 1 if you have the <rpcsvc/dbm.h> header file. */
 /* #undef HAVE_RPCSVC_DBM_H */
 
+/* Define to 1 if you have the `arc4random_buf' function. */
+#define HAVE_ARC4RANDOM_BUF 1
+
 /* Define to use libc SHA1 functions */
 #define HAVE_SHA1_IN_LIBC 1
 
@@ -229,6 +235,9 @@
 /* Define to 1 if you have the <sys/vm86.h> header file. */
 /* #undef HAVE_SYS_VM86_H */
 
+/* Define to 1 if you have the `timingsafe_memcmp' function. */
+/* #undef HAVE_TIMINGSAFE_MEMCMP */
+
 /* Define to 1 if you have the <tslib.h> header file. */
 /* #undef HAVE_TSLIB_H */
 

Index: xsrc/xfree/xc/programs/Xserver/include/os.h
diff -u xsrc/xfree/xc/programs/Xserver/include/os.h:1.5 xsrc/xfree/xc/programs/Xserver/include/os.h:1.5.14.1
--- xsrc/xfree/xc/programs/Xserver/include/os.h:1.5	Fri Mar 18 14:55:16 2005
+++ xsrc/xfree/xc/programs/Xserver/include/os.h	Wed Mar  8 14:47:24 2017
@@ -532,6 +532,11 @@ extern void AbortDDX(void);
 extern void ddxGiveUp(void);
 extern int TimeSinceLastInputEvent(void);
 
+#ifndef HAVE_TIMINGSAFE_MEMCMP
+extern int
+timingsafe_memcmp(const void *b1, const void *b2, size_t len);
+#endif
+
 /* Logging. */
 typedef enum _LogParameter {
     XLOG_FLUSH,

Index: xsrc/xfree/xc/programs/Xserver/os/auth.c
diff -u xsrc/xfree/xc/programs/Xserver/os/auth.c:1.4 xsrc/xfree/xc/programs/Xserver/os/auth.c:1.4.26.1
--- xsrc/xfree/xc/programs/Xserver/os/auth.c:1.4	Fri Mar  5 16:33:09 2004
+++ xsrc/xfree/xc/programs/Xserver/os/auth.c	Wed Mar  8 14:47:24 2017
@@ -50,6 +50,9 @@ from The Open Group.
 #ifdef WIN32
 #include "Xw32defs.h"
 #endif
+#ifdef HAVE_LIBBSD
+#include   <bsd/stdlib.h>       /* for arc4random_buf() */
+#endif
 
 struct protocol {
     unsigned short   name_length;
@@ -57,7 +60,6 @@ struct protocol {
     AuthAddCFunc	Add;	/* new authorization data */
     AuthCheckFunc	Check;	/* verify client authorization data */
     AuthRstCFunc	Reset;	/* delete all authorization data entries */
-    AuthToIDFunc	ToID;	/* convert cookie to ID */
     AuthFromIDFunc	FromID;	/* convert ID to cookie */
     AuthRemCFunc	Remove;	/* remove a specific cookie */
 #ifdef XCSECURITY
@@ -68,7 +70,7 @@ struct protocol {
 static struct protocol   protocols[] = {
 {   (unsigned short) 18,    "MIT-MAGIC-COOKIE-1",
 		MitAddCookie,	MitCheckCookie,	MitResetCookie,
-		MitToID,	MitFromID,	MitRemoveCookie,
+		MitFromID,	MitRemoveCookie,
 #ifdef XCSECURITY
 		MitGenerateCookie
 #endif
@@ -76,7 +78,7 @@ static struct protocol   protocols[] = {
 #ifdef HASXDMAUTH
 {   (unsigned short) 19,    "XDM-AUTHORIZATION-1",
 		XdmAddCookie,	XdmCheckCookie,	XdmResetCookie,
-		XdmToID,	XdmFromID,	XdmRemoveCookie,
+		XdmFromID,	XdmRemoveCookie,
 #ifdef XCSECURITY
 		NULL
 #endif
@@ -85,7 +87,7 @@ static struct protocol   protocols[] = {
 #ifdef SECURE_RPC
 {   (unsigned short) 9,    "SUN-DES-1",
 		SecureRPCAdd,	SecureRPCCheck,	SecureRPCReset,
-		SecureRPCToID,	SecureRPCFromID,SecureRPCRemove,
+		SecureRPCFromID,SecureRPCRemove,
 #ifdef XCSECURITY
 		NULL
 #endif
@@ -94,7 +96,7 @@ static struct protocol   protocols[] = {
 #ifdef K5AUTH
 {   (unsigned short) 14, "MIT-KERBEROS-5",
 		K5Add, K5Check, K5Reset,
-		K5ToID, K5FromID, K5Remove,
+		K5FromID, K5Remove,
 #ifdef XCSECURITY
 		NULL
 #endif
@@ -104,7 +106,7 @@ static struct protocol   protocols[] = {
 {   (unsigned short) XSecurityAuthorizationNameLen,
 	XSecurityAuthorizationName,
 		NULL, AuthSecurityCheck, NULL,
-		NULL, NULL, NULL,
+		NULL, NULL,
 		NULL
 },
 #endif
@@ -254,26 +256,6 @@ ResetAuthorization (void)
     ShouldLoadAuth = TRUE;
 }
 
-XID
-AuthorizationToID (
-	unsigned short	name_length,
-	char		*name,
-	unsigned short	data_length,
-	char		*data)
-{
-    int	i;
-
-    for (i = 0; i < NUM_AUTHORIZATION; i++) {
-    	if (protocols[i].name_length == name_length &&
-	    memcmp (protocols[i].name, name, (int) name_length) == 0 &&
-	    protocols[i].ToID)
-    	{
-	    return (*protocols[i].ToID) (data_length, data);
-    	}
-    }
-    return (XID) ~0L;
-}
-
 int
 AuthorizationFromID (
 	XID 		id,

Index: xsrc/xfree/xc/programs/Xserver/os/mitauth.c
diff -u xsrc/xfree/xc/programs/Xserver/os/mitauth.c:1.1.1.4 xsrc/xfree/xc/programs/Xserver/os/mitauth.c:1.1.1.4.28.1
--- xsrc/xfree/xc/programs/Xserver/os/mitauth.c:1.1.1.4	Sat Jan 19 15:14:27 2002
+++ xsrc/xfree/xc/programs/Xserver/os/mitauth.c	Wed Mar  8 14:47:24 2017
@@ -80,7 +80,7 @@ MitCheckCookie (
 
     for (auth = mit_auth; auth; auth=auth->next) {
         if (data_length == auth->len &&
-	   memcmp (data, auth->data, (int) data_length) == 0)
+	   timingsafe_memcmp(data, auth->data, (int) data_length) == 0)
 	    return auth->id;
     }
     *reason = "Invalid MIT-MAGIC-COOKIE-1 key";
@@ -101,21 +101,6 @@ MitResetCookie (void)
     return 0;
 }
 
-XID
-MitToID (
-	unsigned short	data_length,
-	char		*data)
-{
-    struct auth	*auth;
-
-    for (auth = mit_auth; auth; auth=auth->next) {
-	if (data_length == auth->len &&
-	    memcmp (data, auth->data, data_length) == 0)
-	    return auth->id;
-    }
-    return (XID) -1;
-}
-
 int
 MitFromID (
 	XID		id,

Index: xsrc/xfree/xc/programs/Xserver/os/osdep.h
diff -u xsrc/xfree/xc/programs/Xserver/os/osdep.h:1.1.1.7 xsrc/xfree/xc/programs/Xserver/os/osdep.h:1.1.1.7.14.1
--- xsrc/xfree/xc/programs/Xserver/os/osdep.h:1.1.1.7	Fri Mar 18 13:13:14 2005
+++ xsrc/xfree/xc/programs/Xserver/os/osdep.h	Wed Mar  8 14:47:24 2017
@@ -181,9 +181,6 @@ typedef int (*AuthRemCFunc) (AuthRemCArg
 #define AuthRstCArgs void
 typedef int (*AuthRstCFunc) (AuthRstCArgs);
 
-#define AuthToIDArgs unsigned short data_length, char *data
-typedef XID (*AuthToIDFunc) (AuthToIDArgs);
-
 typedef void (*OsCloseFunc)(ClientPtr);
 
 typedef int (*OsFlushFunc)(ClientPtr who, struct _osComm * oc, char* extraBuf, int extraCount);
@@ -269,7 +266,6 @@ extern void GenerateRandomData (int len,
 /* in mitauth.c */
 extern XID  MitCheckCookie    (AuthCheckArgs);
 extern XID  MitGenerateCookie (AuthGenCArgs);
-extern XID  MitToID           (AuthToIDArgs);
 extern int  MitAddCookie      (AuthAddCArgs);
 extern int  MitFromID         (AuthFromIDArgs);
 extern int  MitRemoveCookie   (AuthRemCArgs);
@@ -278,7 +274,6 @@ extern int  MitResetCookie    (AuthRstCA
 /* in xdmauth.c */
 #ifdef HASXDMAUTH
 extern XID  XdmCheckCookie    (AuthCheckArgs);
-extern XID  XdmToID           (AuthToIDArgs);
 extern int  XdmAddCookie      (AuthAddCArgs);
 extern int  XdmFromID         (AuthFromIDArgs);
 extern int  XdmRemoveCookie   (AuthRemCArgs);
@@ -289,7 +284,6 @@ extern int  XdmResetCookie    (AuthRstCA
 #ifdef SECURE_RPC
 extern void SecureRPCInit     (AuthInitArgs);
 extern XID  SecureRPCCheck    (AuthCheckArgs);
-extern XID  SecureRPCToID     (AuthToIDArgs);
 extern int  SecureRPCAdd      (AuthAddCArgs);
 extern int  SecureRPCFromID   (AuthFromIDArgs);
 extern int  SecureRPCRemove   (AuthRemCArgs);

Index: xsrc/xfree/xc/programs/Xserver/os/rpcauth.c
diff -u xsrc/xfree/xc/programs/Xserver/os/rpcauth.c:1.1.1.5.26.1 xsrc/xfree/xc/programs/Xserver/os/rpcauth.c:1.1.1.5.26.2
--- xsrc/xfree/xc/programs/Xserver/os/rpcauth.c:1.1.1.5.26.1	Fri Dec 12 07:15:06 2014
+++ xsrc/xfree/xc/programs/Xserver/os/rpcauth.c	Wed Mar  8 14:47:24 2017
@@ -184,12 +184,6 @@ SecureRPCReset (void)
     return 1;
 }
 
-XID
-SecureRPCToID (unsigned short data_length, char *data)
-{
-    return rpc_id;
-}
-
 int
 SecureRPCFromID (XID id, unsigned short *data_lenp, char **datap)
 {

Index: xsrc/xfree/xc/programs/Xserver/os/xdmauth.c
diff -u xsrc/xfree/xc/programs/Xserver/os/xdmauth.c:1.1.1.6 xsrc/xfree/xc/programs/Xserver/os/xdmauth.c:1.1.1.6.14.1
--- xsrc/xfree/xc/programs/Xserver/os/xdmauth.c:1.1.1.6	Fri Mar 18 13:13:14 2005
+++ xsrc/xfree/xc/programs/Xserver/os/xdmauth.c	Wed Mar  8 14:47:24 2017
@@ -422,32 +422,6 @@ XdmResetCookie (void)
     return 1;
 }
 
-XID
-XdmToID (unsigned short cookie_length, char *cookie)
-{
-    XdmAuthorizationPtr	auth;
-    XdmClientAuthPtr	client;
-    unsigned char	*plain;
-
-    plain = (unsigned char *) xalloc (cookie_length);
-    if (!plain)
-	return (XID) -1;
-    for (auth = xdmAuth; auth; auth=auth->next) {
-	XdmcpUnwrap ((unsigned char *)cookie, (unsigned char *)&auth->key,
-		     plain, cookie_length);
-	client = XdmAuthorizationValidate (plain, cookie_length, &auth->rho,
-					   NULL, NULL);
-	if (client != NULL)
-	{
-	    xfree (client);
-	    xfree (cookie);
-	    return auth->id;
-	}
-    }
-    xfree (cookie);
-    return (XID) -1;
-}
-
 int
 XdmFromID (XID id, unsigned short *data_lenp, char **datap)
 {

Added files:

Index: xsrc/external/mit/xorg-server/dist/os/timingsafe_memcmp.c
diff -u /dev/null xsrc/external/mit/xorg-server/dist/os/timingsafe_memcmp.c:1.1.6.2
--- /dev/null	Wed Mar  8 14:47:24 2017
+++ xsrc/external/mit/xorg-server/dist/os/timingsafe_memcmp.c	Wed Mar  8 14:47:24 2017
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2014 Google Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <limits.h>
+#include <string.h>
+#include <X11/Xfuncproto.h>
+#include <dix-config.h>
+#include "os.h"
+
+int
+timingsafe_memcmp(const void *b1, const void *b2, size_t len)
+{
+        const unsigned char *p1 = b1, *p2 = b2;
+        size_t i;
+        int res = 0, done = 0;
+
+        for (i = 0; i < len; i++) {
+                /* lt is -1 if p1[i] < p2[i]; else 0. */
+                int lt = (p1[i] - p2[i]) >> CHAR_BIT;
+
+                /* gt is -1 if p1[i] > p2[i]; else 0. */
+                int gt = (p2[i] - p1[i]) >> CHAR_BIT;
+
+                /* cmp is 1 if p1[i] > p2[i]; -1 if p1[i] < p2[i]; else 0. */
+                int cmp = lt - gt;
+
+                /* set res = cmp if !done. */
+                res |= cmp & ~done;
+
+                /* set done if p1[i] != p2[i]. */
+                done |= lt | gt;
+        }
+
+        return (res);
+}

Index: xsrc/xfree/xc/programs/Xserver/os/timingsafe_memcmp.c
diff -u /dev/null xsrc/xfree/xc/programs/Xserver/os/timingsafe_memcmp.c:1.1.6.2
--- /dev/null	Wed Mar  8 14:47:24 2017
+++ xsrc/xfree/xc/programs/Xserver/os/timingsafe_memcmp.c	Wed Mar  8 14:47:24 2017
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2014 Google Inc.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <limits.h>
+#include <string.h>
+#include <X11/Xfuncproto.h>
+#include "os.h"
+
+int
+timingsafe_memcmp(const void *b1, const void *b2, size_t len)
+{
+        const unsigned char *p1 = b1, *p2 = b2;
+        size_t i;
+        int res = 0, done = 0;
+
+        for (i = 0; i < len; i++) {
+                /* lt is -1 if p1[i] < p2[i]; else 0. */
+                int lt = (p1[i] - p2[i]) >> CHAR_BIT;
+
+                /* gt is -1 if p1[i] > p2[i]; else 0. */
+                int gt = (p2[i] - p1[i]) >> CHAR_BIT;
+
+                /* cmp is 1 if p1[i] > p2[i]; -1 if p1[i] < p2[i]; else 0. */
+                int cmp = lt - gt;
+
+                /* set res = cmp if !done. */
+                res |= cmp & ~done;
+
+                /* set done if p1[i] != p2[i]. */
+                done |= lt | gt;
+        }
+
+        return (res);
+}

Reply via email to