Hi Matthieu,

I hate to be the bearer of bad tidings, but your latest changes to
genauth.c on xf-4_3-branch did not build for me.  I had to remove
function prototypes that were duplicated in dm_auth.h when HASXDMAUTH is
defined.

I also resynced with your latest PAM handling updates in session.c and
continued making the C style consistent.

The tree builds fine and xdm appears to work with these patches applied.

Diff is attached, and is against xf-4_3-branch.

-- 
G. Branden Robinson                |    Religion is regarded by the common
Debian GNU/Linux                   |    people as true, by the wise as
[EMAIL PROTECTED]                 |    false, and by the rulers as useful.
http://people.debian.org/~branden/ |    -- Lucius Annaeus Seneca
diff -urN xc/programs/xdm~/genauth.c xc/programs/xdm/genauth.c
--- xc/programs/xdm~/genauth.c  2003-10-08 21:42:04.000000000 -0500
+++ xc/programs/xdm/genauth.c   2003-10-08 21:43:33.000000000 -0500
@@ -33,14 +33,16 @@
  * Author:  Keith Packard, MIT X Consortium
  */
 
-# include   <X11/Xauth.h>
-# include   <X11/Xos.h>
+#include <X11/Xauth.h>
+#include <X11/Xos.h>
 
-# include   "dm.h"
-# include   "dm_auth.h"
-# include   "dm_error.h"
+#include "dm.h"
+#include "dm_auth.h"
+#include "dm_error.h"
 
 #include <errno.h>
+#include <fcntl.h>
+#include <string.h>
 
 #include <time.h>
 #define Time_t time_t
@@ -54,16 +56,6 @@
 #endif
 
 #ifdef HASXDMAUTH
-
-typedef unsigned char auth_cblock[8];  /* block size */
-
-typedef struct auth_ks_struct { auth_cblock _; } auth_wrapper_schedule[16];
-
-extern int _XdmcpAuthSetup(unsigned char *, auth_wrapper_schedule);
-extern int _XdmcpAuthDoIt(unsigned char *, unsigned char *, 
-    auth_wrapper_schedule, int);
-extern void _XdmcpWrapperToOddParity(unsigned char *, unsigned char *);
-
 static void
 longtochars (long l, unsigned char *c)
 {
@@ -72,7 +64,6 @@
     c[2] = (l >> 8) & 0xff;
     c[3] = l & 0xff;
 }
-
 #endif
 
 #ifdef POLL_DEV_RANDOM
@@ -339,7 +330,7 @@
        if ((offset = sumFile (randomFile, BSIZ, SEEK_SET, 0)) == BSIZ)
            return;
     }
-    LogError("Cannot read randomFile \"%s\"; X cookies may be easily 
guessable\n", randomFile);
+    LogError("cannot read randomFile \"%s\"; X cookies may be easily 
guessable\n", randomFile);
 }
 #endif /* !ARC4_RANDOM && !DEV_RANDOM */
 
@@ -372,7 +363,7 @@
            close(fd);
        }
     } else {
-       LogError("Cannot open randomDevice \"%s\", errno = %d\n", 
+       LogError("cannot open randomDevice \"%s\", errno = %d\n",
          randomDevice, errno);
     }
 #endif    
@@ -459,10 +450,10 @@
            return 1;
        }
        close(fd);
-       LogError("Cannot read randomDevice \"%s\", errno=%d\n",
+       LogError("cannot read randomDevice \"%s\", errno=%d\n",
                 randomDevice, errno);
     } else 
-       LogError("Cannot open randomDevice \"%s\", errno = %d\n", 
+       LogError("cannot open randomDevice \"%s\", errno = %d\n",
                 randomDevice, errno);
 #endif /* DEV_RANDOM */
     /*  Try some pseudo-random number genrator daemon next */
diff -urN xc/programs/xdm~/session.c xc/programs/xdm/session.c
--- xc/programs/xdm~/session.c  2003-10-07 18:06:53.000000000 -0500
+++ xc/programs/xdm/session.c   2003-10-07 18:24:12.000000000 -0500
@@ -54,7 +54,7 @@
 #ifdef SECURE_RPC
 # include <rpc/rpc.h>
 # include <rpc/key_prot.h>
-extern int key_setnet(struct key_netstarg *arg);
+extern int key_setnet (struct key_netstarg *arg);
 #endif
 #ifdef K5AUTH
 # include <krb5/krb5.h>
@@ -74,44 +74,44 @@
 # include <grp.h>
 #else
 /* should be in <grp.h> */
-extern void    setgrent(void);
-extern struct group    *getgrent(void);
-extern void    endgrent(void);
+extern void    setgrent (void);
+extern struct group    *getgrent (void);
+extern void    endgrent (void);
 #endif
 
 #ifdef USESHADOW
 # if defined(SVR4)
 #  include <shadow.h>
 # else
-extern struct spwd     *getspnam(GETSPNAM_ARGS);
-extern void    endspent(void);
+extern struct spwd     *getspnam (GETSPNAM_ARGS);
+extern void    endspent (void);
 # endif
 #endif
 #if defined(CSRG_BASED) || defined(__GLIBC__)
 # include <pwd.h>
 # include <unistd.h>
 #else
-extern struct passwd   *getpwnam(GETPWNAM_ARGS);
+extern struct passwd   *getpwnam (GETPWNAM_ARGS);
 # ifdef linux
-extern  void   endpwent(void);
+extern  void   endpwent (void);
 # endif
-extern char    *crypt(CRYPT_ARGS);
+extern char    *crypt (CRYPT_ARGS);
 #endif
 
 #ifdef USE_PAM
 pam_handle_t **
-thepamhp(void)
+thepamhp (void)
 {
        static pam_handle_t *pamh = NULL;
        return &pamh;
 }
 
 pam_handle_t *
-thepamh(void)
+thepamh (void)
 {
        pam_handle_t **pamhp;
 
-       pamhp = thepamhp();
+       pamhp = thepamhp ();
        if (pamhp)
                return *pamhp;
        else
@@ -158,7 +158,7 @@
 #endif
        };
 
-static Bool StartClient(
+static Bool StartClient (
     struct verify_info *verify,
     struct display     *d,
     int                        *pidp,
@@ -253,18 +253,18 @@
 static int
 IOErrorHandler (Display *dpy)
 {
-    LogError ("fatal IO error %d (%s)\n", errno, _SysErrorMsg(errno));
-    exit(RESERVER_DISPLAY);
+    LogError ("fatal IO error %d (%s)\n", errno, _SysErrorMsg (errno));
+    exit (RESERVER_DISPLAY);
     /*NOTREACHED*/
     return 0;
 }
 
 static int
-ErrorHandler(Display *dpy, XErrorEvent *event)
+ErrorHandler (Display *dpy, XErrorEvent *event)
 {
     LogError ("X error\n");
     if (XmuPrintDefaultErrorMessage (dpy, event, stderr) == 0) return 0;
-    exit(UNMANAGE_DISPLAY);
+    exit (UNMANAGE_DISPLAY);
     /*NOTREACHED*/
 }
 
@@ -280,12 +280,12 @@
 #endif
 
     Debug ("ManageSession %s\n", d->name);
-    (void)XSetIOErrorHandler(IOErrorHandler);
-    (void)XSetErrorHandler(ErrorHandler);
+    (void) XSetIOErrorHandler (IOErrorHandler);
+    (void) XSetErrorHandler (ErrorHandler);
 #ifndef HAS_SETPROCTITLE
-    SetTitle(d->name, (char *) 0);
+    SetTitle (d->name, (char *) 0);
 #else
-    setproctitle("%s", d->name);
+    setproctitle ("%s", d->name);
 #endif
     /*
      * Load system default Resources
@@ -296,12 +296,12 @@
     greet_user_proc = GreetUser;
 #else
     Debug ("ManageSession: loading greeter library %s\n", greeterLib);
-    greet_lib_handle = dlopen(greeterLib, RTLD_NOW);
+    greet_lib_handle = dlopen (greeterLib, RTLD_NOW);
     if (greet_lib_handle != NULL)
-       greet_user_proc = (GreetUserProc)dlsym(greet_lib_handle, "GreetUser");
+       greet_user_proc = (GreetUserProc) dlsym (greet_lib_handle, "GreetUser");
     if (greet_user_proc == NULL) {
-       LogError ("%s while loading %s\n", dlerror(), greeterLib);
-       exit(UNMANAGE_DISPLAY);
+       LogError ("%s while loading %s\n", dlerror (), greeterLib);
+       exit (UNMANAGE_DISPLAY);
        }
 #endif
 
@@ -321,11 +321,11 @@
             *     setting up environment and running the session
             */
            if (StartClient (&verify, d, &clientPid, greet.name, 
greet.password)) {
-               Debug ("Client Started\n");
+               Debug ("client started\n");
 
 #ifndef GREET_USER_STATIC
                 /* Save memory; close library */
-                dlclose(greet_lib_handle);
+                dlclose (greet_lib_handle);
 #endif
 
                /*
@@ -363,7 +363,7 @@
     /*
      * run system-wide reset file
      */
-    Debug ("Source reset program %s\n", d->reset);
+    Debug ("source reset program %s\n", d->reset);
     source (verify.systemEnviron, d->reset);
     SessionExit (d, OBEYSESS_DISPLAY, TRUE);
 }
@@ -378,7 +378,7 @@
        env = systemEnv (d, (char *) 0, (char *) 0);
        args = parseArgs ((char **) 0, d->xrdb);
        args = parseArgs (args, d->resources);
-       Debug ("Loading resource file: %s\n", d->resources);
+       Debug ("loading resource file: %s\n", d->resources);
        (void) runAndWait (args, env);
        freeArgs (args);
        freeEnv (env);
@@ -402,12 +402,12 @@
 DeleteXloginResources (struct display *d, Display *dpy)
 {
     int i;
-    Atom prop = XInternAtom(dpy, "SCREEN_RESOURCES", True);
+    Atom prop = XInternAtom (dpy, "SCREEN_RESOURCES", True);
 
-    XDeleteProperty(dpy, RootWindow (dpy, 0), XA_RESOURCE_MANAGER);
+    XDeleteProperty (dpy, RootWindow (dpy, 0), XA_RESOURCE_MANAGER);
     if (prop) {
-       for (i = ScreenCount(dpy); --i >= 0; )
-           XDeleteProperty(dpy, RootWindow (dpy, i), prop);
+       for (i = ScreenCount (dpy); --i >= 0; )
+           XDeleteProperty (dpy, RootWindow (dpy, i), prop);
     }
 }
 
@@ -431,7 +431,7 @@
        SessionExit (d, RESERVER_DISPLAY, FALSE);
     }
     (void) alarm ((unsigned) d->grabTimeout);
-    Debug ("Before XGrabServer %s\n", d->name);
+    Debug ("before XGrabServer %s\n", d->name);
     XGrabServer (dpy);
     if (XGrabKeyboard (dpy, DefaultRootWindow (dpy), True, GrabModeAsync,
                       GrabModeAsync, CurrentTime) != GrabSuccess) {
@@ -466,13 +466,13 @@
 SessionExit (struct display *d, int status, int removeAuth)
 {
 #ifdef USE_PAM
-       pam_handle_t *pamh = thepamh();
+       pam_handle_t *pamh = thepamh ();
 #endif
 #ifdef USE_PAM
     if (pamh) {
         /* shutdown PAM session */
-       pam_close_session(pamh, 0);
-       pam_end(pamh, PAM_SUCCESS);
+       pam_close_session (pamh, 0);
+       pam_end (pamh, PAM_SUCCESS);
        pamh = NULL;
     }
 #endif
@@ -492,26 +492,26 @@
            krb5_error_code code;
            krb5_ccache ccache;
 
-           code = Krb5DisplayCCache(d->name, &ccache);
+           code = Krb5DisplayCCache (d->name, &ccache);
            if (code)
                LogError ("%s while getting Krb5 ccache to destroy\n",
-                        error_message(code));
+                        error_message (code));
            else {
-               code = krb5_cc_destroy(ccache);
+               code = krb5_cc_destroy (ccache);
                if (code) {
                    if (code == KRB5_FCC_NOFILE) {
-                       Debug ("No Kerberos ccache file found to destroy\n");
+                       Debug ("no Kerberos ccache file found to destroy\n");
                    } else
                        LogError ("%s while destroying Krb5 credentials 
cache\n",
-                                error_message(code));
+                                error_message (code));
                } else
                    Debug ("Kerberos ccache destroyed\n");
-               krb5_cc_close(ccache);
+               krb5_cc_close (ccache);
            }
        }
 #endif /* K5AUTH */
     }
-    Debug ("Display %s exiting with status %d\n", d->name, status);
+    Debug ("display %s exiting with status %d\n", d->name, status);
     exit (status);
 }
 
@@ -546,14 +546,14 @@
        Debug ("\n");
     }
 #ifdef USE_PAM
-    if (pamh) pam_open_session(pamh, 0);
+    if (pamh) pam_open_session (pamh, 0);
 #endif
     switch (pid = fork ()) {
     case 0:
        CleanUpChild ();
 #ifdef XDMCP
        /* The chooser socket is not closed by CleanUpChild() */
-       DestroyWellKnownSockets();
+       DestroyWellKnownSockets ();
 #endif
 
        /* Do system-dependent login setup here */
@@ -562,9 +562,9 @@
        /* pass in environment variables set by libpam and modules it called */
        if (pamh) {
            long i;
-           char **pam_env = pam_getenvlist(pamh);
-           for(i = 0; pam_env && pam_env[i]; i++) {
-               verify->userEnviron = putEnv(pam_env[i], verify->userEnviron);
+           char **pam_env = pam_getenvlist (pamh);
+           for (i = 0; pam_env && pam_env[i]; i++) {
+               verify->userEnviron = putEnv (pam_env[i], verify->userEnviron);
            }
        }
 #endif
@@ -572,36 +572,38 @@
 
 #ifndef AIXV3
 #ifndef HAS_SETUSERCONTEXT
-       if (setgid(verify->gid) < 0) {
-           LogError ("setgid %d (user \"%s\") failed, errno=%d\n",
-                    verify->gid, name, errno);
+       if (setgid (verify->gid) < 0) {
+           LogError ("setgid %d (user \"%s\") failed: %s\n",
+                     verify->gid, name, _SysErrorMsg (errno));
            return (0);
        }
 #if defined(BSD) && (BSD >= 199103)
-       if (setlogin(name) < 0) {
-           LogError ("setlogin for \"%s\" failed, errno=%d", name, errno);
-           return(0);
+       if (setlogin (name) < 0) {
+           LogError ("setlogin for \"%s\" failed: %s\n", name,
+                     _SysErrorMsg (errno));
+           return (0);
        }
 #endif
 #ifndef QNX4
-       if (initgroups(name, verify->gid) < 0) {
-           LogError ("initgroups for \"%s\" failed, errno=%d\n", name, errno);
+       if (initgroups (name, verify->gid) < 0) {
+           LogError ("initgroups for \"%s\" failed: %s\n", name,
+                    _SysErrorMsg (errno));
            return (0);
        }
 #endif   /* QNX4 doesn't support multi-groups, no initgroups() */
 #ifdef USE_PAM
-       if (pamh) {
-           pam_error = pam_setcred (pamh, PAM_ESTABLISH_CRED);
+       if (thepamh ()) {
+           pam_error = pam_setcred (thepamh (), PAM_ESTABLISH_CRED);
            if (pam_error != PAM_SUCCESS) {
-               LogError ("pam_setcred for \"%s\" failed: %s\n",
-                        name, pam_strerror(pamh, pam_error));
-               return(0);
+               LogError ("pam_setcred for \"%s\" failed: %s\n", name,
+                         pam_strerror (pamh, pam_error));
+               return (0);
            }
        }
 #endif
-       if (setuid(verify->uid) < 0) {
-           LogError ("setuid %d (user \"%s\") failed, errno=%d\n",
-                    verify->uid, name, errno);
+       if (setuid (verify->uid) < 0) {
+           LogError ("setuid %d (user \"%s\") failed: %s\n",
+                     verify->uid, name, _SysErrorMsg (errno));
            return (0);
        }
 #else /* HAS_SETUSERCONTEXT */
@@ -609,16 +611,17 @@
         * Set the user's credentials: uid, gid, groups,
         * environment variables, resource limits, and umask.
         */
-       pwd = getpwnam(name);
+       pwd = getpwnam (name);
        if (pwd) {
-           if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0) {
-               LogError ("setusercontext for \"%s\" failed, errno=%d\n", name,
-                   errno);
+           if (setusercontext (NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0) {
+               LogError ("setusercontext for \"%s\" failed: %s\n", name,
+                         _SysErrorMsg (errno));
                return (0);
            }
-           endpwent();
+           endpwent ();
        } else {
-           LogError ("getpwnam for \"%s\" failed, errno=%d\n", name, errno);
+           LogError ("getpwnam for \"%s\" failed: %s\n", name,
+                     _SysErrorMsg (errno));
            return (0);
        }
 #endif /* HAS_SETUSERCONTEXT */
@@ -627,8 +630,9 @@
         * Set the user's credentials: uid, gid, groups,
         * audit classes, user limits, and umask.
         */
-       if (setpcred(name, NULL) == -1) {
-           LogError ("setpcred for \"%s\" failed, errno=%d\n", name, errno);
+       if (setpcred (name, NULL) == -1) {
+           LogError ("setpcred for \"%s\" failed: %s\n", name,
+                     _SysErrorMsg (errno));
            return (0);
        }
 #endif /* AIXV3 */
@@ -647,24 +651,24 @@
            int     key_set_ok = 0;
 
            nameret = getnetname (netname);
-           Debug ("User netname: %s\n", netname);
+           Debug ("user netname: %s\n", netname);
            len = strlen (passwd);
            if (len > 8)
                bzero (passwd + 8, len - 8);
-           keyret = getsecretkey(netname,secretkey,passwd);
+           keyret = getsecretkey (netname,secretkey,passwd);
            Debug ("getsecretkey returns %d, key length %d\n",
                    keyret, strlen (secretkey));
-           memcpy(&(netst.st_priv_key), secretkey, HEXKEYBYTES);
-           netst.st_netname = strdup(netname);
-           memset(netst.st_pub_key, 0, HEXKEYBYTES);
-            if (key_setnet(&netst) < 0) {
-               Debug ("Could not set secret key.\n");
+           memcpy (&(netst.st_priv_key), secretkey, HEXKEYBYTES);
+           netst.st_netname = strdup (netname);
+           memset (netst.st_pub_key, 0, HEXKEYBYTES);
+            if (key_setnet (&netst) < 0) {
+               Debug ("could not set secret key.\n");
             }
-           free(netst.st_netname);     
+           free (netst.st_netname);
            /* is there a key, and do we have the right password? */
            if (keyret == 1) {
                if (*secretkey) {
-                   keyret = key_setsecret(secretkey);
+                   keyret = key_setsecret (secretkey);
                    Debug ("key_setsecret returns %d\n", keyret);
                    if (keyret == -1)
                        LogError ("failed to set NIS secret key\n");
@@ -681,7 +685,7 @@
                int i, j;
                for (i = 0; i < d->authNum; i++) {
                    if (d->authorizations[i]->name_length == 9 &&
-                       memcmp(d->authorizations[i]->name, "SUN-DES-1", 9) == 
0) {
+                       memcmp (d->authorizations[i]->name, "SUN-DES-1", 9) == 
0) {
                        for (j = i+1; j < d->authNum; j++)
                            d->authorizations[j-1] = d->authorizations[j];
                        d->authNum--;
@@ -689,7 +693,7 @@
                    }
                }
            }
-           bzero(secretkey, strlen(secretkey));
+           bzero (secretkey, strlen (secretkey));
        }
 #endif
 #ifdef K5AUTH
@@ -697,18 +701,18 @@
        {
            int i, j;
            int result;
-           extern char *Krb5CCacheName();
+           extern char *Krb5CCacheName ();
 
-           result = Krb5Init(name, passwd, d);
+           result = Krb5Init (name, passwd, d);
            if (result == 0) {
                /* point session clients at the Kerberos credentials cache */
                verify->userEnviron =
-                   setEnv(verify->userEnviron,
-                          "KRB5CCNAME", Krb5CCacheName(d->name));
+                   setEnv (verify->userEnviron,
+                          "KRB5CCNAME", Krb5CCacheName (d->name));
            } else {
                for (i = 0; i < d->authNum; i++) {
                    if (d->authorizations[i]->name_length == 14 &&
-                       memcmp(d->authorizations[i]->name, "MIT-KERBEROS-5", 
14) == 0) {
+                       memcmp (d->authorizations[i]->name, "MIT-KERBEROS-5", 
14) == 0) {
                        /* remove Kerberos from authorizations list */
                        for (j = i+1; j < d->authNum; j++)
                            d->authorizations[j-1] = d->authorizations[j];
@@ -719,7 +723,7 @@
            }
        }
 #endif /* K5AUTH */
-       bzero(passwd, strlen(passwd));
+       bzero (passwd, strlen (passwd));
        SetUserAuthorization (d, verify);
        home = getEnv (verify->userEnviron, "HOME");
        if (home)
@@ -727,27 +731,27 @@
                LogError ("user \"%s\": cannot chdir to home \"%s\" (err %d), 
using \"/\"\n",
                          getEnv (verify->userEnviron, "USER"), home, errno);
                chdir ("/");
-               verify->userEnviron = setEnv(verify->userEnviron, "HOME", "/");
+               verify->userEnviron = setEnv (verify->userEnviron, "HOME", "/");
            }
        if (verify->argv) {
                Debug ("executing session %s\n", verify->argv[0]);
                execute (verify->argv, verify->userEnviron);
-               LogError ("Session \"%s\" execution failed (err %d)\n", 
verify->argv[0], errno);
+               LogError ("session \"%s\" execution failed (err %d)\n", 
verify->argv[0], errno);
        } else {
-               LogError ("Session has no command/arguments\n");
+               LogError ("session has no command/arguments\n");
        }
        failsafeArgv[0] = d->failsafeClient;
        failsafeArgv[1] = 0;
        execute (failsafeArgv, verify->userEnviron);
        exit (1);
     case -1:
-       bzero(passwd, strlen(passwd));
+       bzero (passwd, strlen (passwd));
        Debug ("StartSession, fork failed\n");
-       LogError ("can't start session on \"%s\", fork failed, errno=%d\n",
-                 d->name, errno);
+       LogError ("can't start session on \"%s\", fork failed: %s\n",
+                 d->name, _SysErrorMsg (errno));
        return 0;
     default:
-       bzero(passwd, strlen(passwd));
+       bzero (passwd, strlen (passwd));
        Debug ("StartSession, fork succeeded %d\n", pid);
        *pidp = pid;
        return 1;
@@ -856,7 +860,7 @@
            p = "/bin/sh";
            optarg = 0;
        }
-       Debug ("Shell script execution: %s (optarg %s)\n",
+       Debug ("shell script execution: %s (optarg %s)\n",
                p, optarg ? optarg : "(null)");
        for (av = argv, argc = 0; *av; av++, argc++)
            /* SUPPRESS 530 */
@@ -910,9 +914,10 @@
     return env;
 }
 
-#if (defined(Lynx) && !defined(HAS_CRYPT)) || defined(SCO) && 
!defined(SCO_USA) && !defined(_SCO_DS)
-char *crypt(char *s1, char *s2)
+#if (defined(Lynx) && !defined(HAS_CRYPT)) || (defined(SCO) && 
!defined(SCO_USA) && !defined(_SCO_DS))
+char *
+crypt (char *s1, char *s2)
 {
-       return(s2);
+    return (s2);
 }
 #endif

Attachment: signature.asc
Description: Digital signature

Reply via email to