Author: branden
Date: 2003-10-07 21:34:31 -0500 (Tue, 07 Oct 2003)
New Revision: 633

Modified:
   branches/4.3.0/sid/debian/changelog
   branches/4.3.0/sid/debian/patches/000_post430.diff
   branches/4.3.0/sid/debian/patches/002_xdm_fixes.diff
   branches/4.3.0/sid/debian/patches/067_fix_X11_and_xdm_build_problems.diff
Log:
Grab latest fixes to upstream CVS xf-4_3-branch.

- debian/patches/000_post430.diff:
  + (xc/programs/xdm/genauth.c):
      Build fixes (Branden Robinson, Matthieu Herrb).
  + (xc/programs/xdm/session.c):
      Use pam_strerror() to print an error message after pam_setcred()
      fails, C style unification (Branden Robinson).
  + (xc/programs/xdm/prngc.c):
      improve portability:
      - use the already defined X_NO_SYS_UN symbol for sys/un.h inclusion
      - don't use struct sockaddr_storage
- debian/patches/002_xdm_fixes.diff:
  + resynchronize and drop patches applied upstream
  + more stylistic cleanups to session.c
- debian/patches/067_fix_X11_and_xdm_build_problems.diff: drop patches
  applied upstream


Modified: branches/4.3.0/sid/debian/changelog
===================================================================
--- branches/4.3.0/sid/debian/changelog 2003-10-08 02:27:36 UTC (rev 632)
+++ branches/4.3.0/sid/debian/changelog 2003-10-08 02:34:31 UTC (rev 633)
@@ -12,8 +12,25 @@
     - debian/xlibs-dbg.install: add libXv.so.1.0
     - debian/xlibs-dbg.links: add libXv link
 
- -- Branden Robinson <[EMAIL PROTECTED]>  Fri,  3 Oct 2003 01:19:52 -0500
+  * Grab latest fixes to upstream CVS xf-4_3-branch.
+    - debian/patches/000_post430.diff:
+      + (xc/programs/xdm/genauth.c):
+          Build fixes (Branden Robinson, Matthieu Herrb).
+      + (xc/programs/xdm/session.c):
+          Use pam_strerror() to print an error message after pam_setcred()
+          fails, C style unification (Branden Robinson).
+      + (xc/programs/xdm/prngc.c):
+          improve portability:
+          - use the already defined X_NO_SYS_UN symbol for sys/un.h inclusion
+          - don't use struct sockaddr_storage
+    - debian/patches/002_xdm_fixes.diff:
+      + resynchronize and drop patches applied upstream
+      + more stylistic cleanups to session.c
+    - debian/patches/067_fix_X11_and_xdm_build_problems.diff: drop patches
+      applied upstream
 
+ -- Branden Robinson <[EMAIL PROTECTED]>  Tue,  7 Oct 2003 21:28:53 -0500
+
 xfree86 (4.3.0-0pre1v3) experimental; urgency=high
 
   * Update pam_setcred() security fix to xdm to use pam_error and

Modified: branches/4.3.0/sid/debian/patches/000_post430.diff
===================================================================
--- branches/4.3.0/sid/debian/patches/000_post430.diff  2003-10-08 02:27:36 UTC (rev 
632)
+++ branches/4.3.0/sid/debian/patches/000_post430.diff  2003-10-08 02:34:31 UTC (rev 
633)
@@ -244,6 +244,18 @@
 (xc/lib/FS/{FSFtNames.c,FSGetCats.c,FSListCats.c,FSListExt.c}):
   Fix overflows in the test for integer overflows. Reported by Paul Anderson.
 
+(xc/programs/xdm/genauth.c):
+  Build fixes (Branden Robinson, Matthieu Herrb).
+
+(xc/programs/xdm/session.c):
+  Use pam_strerror() to print an error message after pam_setcred() fails,
+  C style unification (Branden Robinson).
+
+(xc/programs/xdm/prngc.c):
+  improve portability:
+  - use the already defined X_NO_SYS_UN symbol for sys/un.h inclusion
+  - don't use struct sockaddr_storage
+
 Index: xc/config/cf/NetBSD.cf
 ===================================================================
 RCS file: /cvs/xc/config/cf/NetBSD.cf,v
@@ -5816,16 +5828,16 @@
 ===================================================================
 RCS file: /cvs/xc/programs/xdm/genauth.c,v
 retrieving revision 3.15
-retrieving revision 3.15.2.1
-diff -u -r3.15 -r3.15.2.1
+retrieving revision 3.15.2.2
+diff -u -r3.15 -r3.15.2.2
 --- xc/programs/xdm/genauth.c  6 Oct 2002 18:12:29 -0000       3.15
-+++ xc/programs/xdm/genauth.c  17 Sep 2003 05:58:16 -0000      3.15.2.1
++++ xc/programs/xdm/genauth.c  29 Sep 2003 20:27:30 -0000      3.15.2.2
 @@ -26,7 +26,7 @@
  from The Open Group.
  
  */
 -/* $XFree86: xc/programs/xdm/genauth.c,v 3.15 2002/10/06 18:12:29 herrb Exp $ */
-+/* $XFree86: xc/programs/xdm/genauth.c,v 3.15.2.1 2003/09/17 05:58:16 herrb Exp $ */
++/* $XFree86: xc/programs/xdm/genauth.c,v 3.15.2.2 2003/09/29 20:27:30 herrb Exp $ */
  
  /*
   * xdm - display manager daemon
@@ -5833,7 +5845,7 @@
  #include <time.h>
  #define Time_t time_t
  
-+#if !defined(ARC4_RANDOM) && !defined(DEV_RANDOM) && !defined(HASXDMAUTH)
++#ifdef HASXDMAUTH
  static unsigned char  key[8];
 +#endif
 +
@@ -5843,8 +5855,20 @@
  
  #ifdef HASXDMAUTH
  
-@@ -66,66 +72,295 @@
+@@ -53,7 +59,10 @@
  
+ typedef struct auth_ks_struct { auth_cblock _; } auth_wrapper_schedule[16];
+ 
+-extern void _XdmcpWrapperToOddParity();
++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)
+@@ -66,66 +75,295 @@
+ 
  #endif
  
 -# define FILE_LIMIT   1024    /* no more than this many buffers */
@@ -6159,7 +6183,8 @@
      sum[1] = arc4random();
      *(u_char *)sum = 0;
  
-     _XdmcpWrapperToOddParity(sum, key);
+-    _XdmcpWrapperToOddParity(sum, key);
++    _XdmcpWrapperToOddParity((unsigned char *)sum, key);
 +#else
 +    unsigned char   tmpkey[8];
  
@@ -6175,7 +6200,7 @@
            tmpkey[0] = 0;
            _XdmcpWrapperToOddParity(tmpkey, key);
            close(fd);
-@@ -133,15 +368,26 @@
+@@ -133,15 +371,27 @@
        } else {
            close(fd);
        }
@@ -6192,8 +6217,9 @@
 -      sum[1] = time ((Time_t *) 0);
 +#endif    
 +    /*  Try some pseudo-random number genrator daemon next */
-+    if (prngdSocket != NULL || prngdPort != NULL) {
-+          if (get_prngd_bytes(tmpkey, len, prngdPort, prngdSocket) == 0) {
++    if (prngdSocket != NULL || prngdPort != 0) {
++          if (get_prngd_bytes(tmpkey, sizeof(tmpkey), prngdPort, 
++                  prngdSocket) == 0) {
 +                  tmpkey[0] = 0;
 +                  _XdmcpWrapperToOddParity(tmpkey, key);
 +                  return;
@@ -6209,7 +6235,7 @@
      longtochars (sum[0], tmpkey+0);
      longtochars (sum[1], tmpkey+4);
      tmpkey[0] = 0;
-@@ -151,115 +397,84 @@
+@@ -151,115 +401,84 @@
  
  #endif
  
@@ -6239,7 +6265,7 @@
  GenerateAuthData (char *auth, int len)
  {
 +#ifdef HASXDMAUTH
-+    int                   bit;
++    int                   i, bit;
 +    auth_wrapper_schedule    schedule;
 +    unsigned char         data[8];
 +    static int            xdmcpAuthInited;
@@ -6495,9 +6521,9 @@
 RCS file: xc/programs/xdm/prngc.c
 diff -N xc/programs/xdm/prngc.c
 --- /dev/null  1 Jan 1970 00:00:00 -0000
-+++ xc/programs/xdm/prngc.c    17 Sep 2003 05:58:16 -0000      1.1.2.1
-@@ -0,0 +1,188 @@
-+/* $XFree86: xc/programs/xdm/prngc.c,v 1.1.2.1 2003/09/17 05:58:16 herrb Exp $ */
++++ xc/programs/xdm/prngc.c    29 Sep 2003 21:16:15 -0000      1.1.2.2
+@@ -0,0 +1,193 @@
++/* $XFree86: xc/programs/xdm/prngc.c,v 1.1.2.2 2003/09/29 21:16:15 herrb Exp $ */
 +/* Code grabbed from OpenSSH - portable version */
 +/*
 + * Copyright (c) 1995,1999 Theo de Raadt.  All rights reserved.
@@ -6524,15 +6550,17 @@
 + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 + */
 +
-+#if defined(CSRG_BASED)  || defined(linux)
-+# define HAVE_SYS_UN_H
-+#endif
 +
 +#include <sys/types.h>
 +#include <sys/socket.h>
-+#ifdef HAVE_SYS_UN_H
-+#include <sys/un.h>
++#include <X11/Xos.h>
++#ifndef X_NO_SYS_UN
++#ifndef Lynx
++#include      <sys/un.h>
++#else
++#include      <un.h>
 +#endif
++#endif
 +#include <netinet/in.h>
 +#include <errno.h>
 +#include <signal.h>
@@ -6563,9 +6591,10 @@
 +{
 +      int fd, addr_len, rval, errors;
 +      char msg[2];
-+      struct sockaddr_storage addr;
-+      struct sockaddr_in *addr_in = (struct sockaddr_in *)&addr;
-+      struct sockaddr_un *addr_un = (struct sockaddr_un *)&addr;
++      struct sockaddr *addr;
++      struct sockaddr_in addr_in;
++      struct sockaddr_un addr_un;
++      int af;
 +      void (*old_sigpipe)(int);
 +
 +      /* Sanity checks */
@@ -6575,7 +6604,7 @@
 +              return -1;
 +      }
 +      if (socket_path != NULL &&
-+          strlen(socket_path) >= sizeof(addr_un->sun_path)) {
++          strlen(socket_path) >= sizeof(addr_un.sun_path)) {
 +              LogError("get_random_prngd: Random pool path is too long\n");
 +              return -1;
 +      }
@@ -6585,19 +6614,21 @@
 +              return -1;
 +      }
 +
-+      memset(&addr, '\0', sizeof(addr));
++      memset(&addr_in, '\0', sizeof(addr));
 +
 +      if (tcp_port != 0) {
-+              addr_in->sin_family = AF_INET;
-+              addr_in->sin_addr.s_addr = htonl(INADDR_LOOPBACK);
-+              addr_in->sin_port = htons(tcp_port);
-+              addr_len = sizeof(*addr_in);
++              af = addr_in.sin_family = AF_INET;
++              addr_in.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
++              addr_in.sin_port = htons(tcp_port);
++              addr_len = sizeof(addr_in);
++              addr = (struct sockaddr *)&addr_in;
 +      } else {
-+              addr_un->sun_family = AF_UNIX;
-+              strncpy(addr_un->sun_path, socket_path,
-+                  sizeof(addr_un->sun_path));
++              af = addr_un.sun_family = AF_UNIX;
++              strncpy(addr_un.sun_path, socket_path,
++                  sizeof(addr_un.sun_path));
 +              addr_len = offsetof(struct sockaddr_un, sun_path) +
 +                  strlen(socket_path) + 1;
++              addr = (struct sockaddr *)&addr_un;
 +      }
 +
 +      old_sigpipe = signal(SIGPIPE, SIG_IGN);
@@ -6605,20 +6636,20 @@
 +      errors = 0;
 +      rval = -1;
 +reopen:
-+      fd = socket(addr.ss_family, SOCK_STREAM, 0);
++      fd = socket(af, SOCK_STREAM, 0);
 +      if (fd == -1) {
 +              LogInfo("Couldn't create socket: %s\n", strerror(errno));
 +              goto done;
 +      }
 +
-+      if (connect(fd, (struct sockaddr*)&addr, addr_len) == -1) {
-+              if (tcp_port != 0) {
++      if (connect(fd, (struct sockaddr*)addr, addr_len) == -1) {
++              if (af == AF_INET) {
 +                      LogInfo("Couldn't connect to PRNGD port %d: %s\n",
 +                          tcp_port, strerror(errno));
 +              } else {
 +                      LogInfo("Couldn't connect to PRNGD socket"
 +                          " \"%s\": %s\n",
-+                          addr_un->sun_path, strerror(errno));
++                          addr_un.sun_path, strerror(errno));
 +              }
 +              goto done;
 +      }
@@ -6878,64 +6909,394 @@
 ===================================================================
 RCS file: /cvs/xc/programs/xdm/session.c,v
 retrieving revision 3.33
-retrieving revision 3.33.4.1
-diff -u -r3.33 -r3.33.4.1
+retrieving revision 3.33.4.2
+diff -u -r3.33 -r3.33.4.2
 --- xc/programs/xdm/session.c  14 Dec 2001 20:01:23 -0000      3.33
-+++ xc/programs/xdm/session.c  17 Sep 2003 05:58:16 -0000      3.33.4.1
++++ xc/programs/xdm/session.c  29 Sep 2003 21:01:09 -0000      3.33.4.2
 @@ -26,7 +26,7 @@
  from The Open Group.
  
  */
 -/* $XFree86: xc/programs/xdm/session.c,v 3.33 2001/12/14 20:01:23 dawes Exp $ */
-+/* $XFree86: xc/programs/xdm/session.c,v 3.33.4.1 2003/09/17 05:58:16 herrb Exp $ */
++/* $XFree86: xc/programs/xdm/session.c,v 3.33.4.2 2003/09/29 21:01:09 herrb Exp $ */
  
  /*
   * xdm - display manager daemon
-@@ -54,6 +54,7 @@
+@@ -54,23 +54,24 @@
  #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>
-@@ -68,7 +69,7 @@
+ #endif
  
+ #ifndef GREET_USER_STATIC
+-#include <dlfcn.h>
+-#ifndef RTLD_NOW
+-#define RTLD_NOW 1
+-#endif
++# include <dlfcn.h>
++# ifndef RTLD_NOW
++#  define RTLD_NOW 1
++# endif
+ #endif
+ 
  static        int     runAndWait (char **args, char **environ);
  
 -#if defined(CSRG_BASED) || defined(__osf__) || defined(__DARWIN__) || 
defined(__QNXNTO__)
-+#if defined(CSRG_BASED) || defined(__osf__) || defined(__DARWIN__) || 
defined(__QNXNTO__) || defined(sun)
- #include <sys/types.h>
- #include <grp.h>
+-#include <sys/types.h>
+-#include <grp.h>
++#if defined(CSRG_BASED) || defined(__osf__) || defined(__DARWIN__) || 
defined(__QNXNTO__) || defined(sun) || defined(__GLIBC__)
++# include <sys/types.h>
++# include <grp.h>
  #else
-@@ -79,9 +80,13 @@
+ /* should be in <grp.h> */
+ extern        void    setgrent(void);
+@@ -79,27 +80,34 @@
  #endif
  
  #ifdef USESHADOW
-+#if defined(SVR4)
-+#include <shadow.h>
-+#else
++# if defined(SVR4)
++#  include <shadow.h>
++# else
  extern        struct spwd     *getspnam(GETSPNAM_ARGS);
  extern        void    endspent(void);
++# endif
  #endif
+-#if defined(CSRG_BASED)
+-#include <pwd.h>
+-#include <unistd.h>
++#if defined(CSRG_BASED) || defined(__GLIBC__)
++# include <pwd.h>
++# include <unistd.h>
+ #else
+ extern        struct passwd   *getpwnam(GETPWNAM_ARGS);
+-#ifdef linux
++# ifdef linux
+ extern  void  endpwent(void);
+-#endif
++# endif
+ extern        char    *crypt(CRYPT_ARGS);
+ #endif
++
+ #ifdef USE_PAM
+-pam_handle_t **thepamhp()
++pam_handle_t **
++thepamhp(void)
+ {
+       static pam_handle_t *pamh = NULL;
+       return &pamh;
+ }
+ 
+-pam_handle_t *thepamh()
++pam_handle_t *
++thepamh(void)
+ {
+       pam_handle_t **pamhp;
+ 
+@@ -136,12 +144,12 @@
+       endgrent,
+ #ifdef USESHADOW
+       getspnam,
+-#ifndef QNX4
++# ifndef QNX4
+       endspent,
+-#endif /* QNX4 doesn't use endspent */
++# endif /* QNX4 doesn't use endspent */
+ #endif
+       getpwnam,
+-#ifdef linux
++#if defined(linux) || defined(__GLIBC__)
+       endpwent,
+ #endif
+       crypt,
+@@ -189,7 +197,7 @@
+ }
+ 
+ #if defined(_POSIX_SOURCE) || defined(SYSV) || defined(SVR4)
+-#define killpg(pgrp, sig) kill(-(pgrp), sig)
++# define killpg(pgrp, sig) kill(-(pgrp), sig)
+ #endif
+ 
+ static void
+@@ -226,8 +234,7 @@
+ void
+ SessionPingFailed (struct display *d)
+ {
+-    if (clientPid > 1)
+-    {
++    if (clientPid > 1) {
+       AbortClient (clientPid);
+       source (verify.systemEnviron, d->reset);
+     }
+@@ -246,7 +253,7 @@
+ static int
+ IOErrorHandler (Display *dpy)
+ {
+-    LogError("fatal IO error %d (%s)\n", errno, _SysErrorMsg(errno));
++    LogError ("fatal IO error %d (%s)\n", errno, _SysErrorMsg(errno));
+     exit(RESERVER_DISPLAY);
+     /*NOTREACHED*/
+     return 0;
+@@ -255,7 +262,7 @@
+ static int
+ ErrorHandler(Display *dpy, XErrorEvent *event)
+ {
+-    LogError("X error\n");
++    LogError ("X error\n");
+     if (XmuPrintDefaultErrorMessage (dpy, event, stderr) == 0) return 0;
+     exit(UNMANAGE_DISPLAY);
+     /*NOTREACHED*/
+@@ -266,7 +273,7 @@
+ {
+     static int                pid = 0;
+     Display           *dpy;
+-    greet_user_rtn    greet_stat; 
++    greet_user_rtn    greet_stat;
+     static GreetUserProc greet_user_proc = NULL;
+ #ifndef GREET_USER_STATIC
+     void              *greet_lib_handle;
+@@ -288,13 +295,12 @@
+ #ifdef GREET_USER_STATIC
+     greet_user_proc = GreetUser;
+ #else
+-    Debug("ManageSession: loading greeter library %s\n", greeterLib);
++    Debug ("ManageSession: loading greeter library %s\n", greeterLib);
+     greet_lib_handle = dlopen(greeterLib, RTLD_NOW);
+     if (greet_lib_handle != NULL)
+       greet_user_proc = (GreetUserProc)dlsym(greet_lib_handle, "GreetUser");
+-    if (greet_user_proc == NULL)
+-      {
+-      LogError("%s while loading %s\n", dlerror(), greeterLib);
++    if (greet_user_proc == NULL) {
++      LogError ("%s while loading %s\n", dlerror(), greeterLib);
+       exit(UNMANAGE_DISPLAY);
+       }
+ #endif
+@@ -306,8 +312,7 @@
+     greet.version = 1;
+     greet_stat = (*greet_user_proc)(d, &dpy, &verify, &greet, &dlfuncs);
+ 
+-    if (greet_stat == Greet_Success)
+-    {
++    if (greet_stat == Greet_Success) {
+       clientPid = 0;
+       if (!Setjmp (abortSession)) {
+           (void) Signal (SIGTERM, catchTerm);
+@@ -322,29 +327,23 @@
+                 /* Save memory; close library */
+                 dlclose(greet_lib_handle);
+ #endif
+- 
++
+               /*
+                * Wait for session to end,
+                */
+               for (;;) {
+-                  if (d->pingInterval)
+-                  {
+-                      if (!Setjmp (pingTime))
+-                      {
++                  if (d->pingInterval) {
++                      if (!Setjmp (pingTime)) {
+                           (void) Signal (SIGALRM, catchAlrm);
+                           (void) alarm (d->pingInterval * 60);
+                           pid = wait ((waitType *) 0);
+                           (void) alarm (0);
+-                      }
+-                      else
+-                      {
++                      } else {
+                           (void) alarm (0);
+                           if (!PingServer (d, (Display *) NULL))
+                               SessionPingFailed (d);
+                       }
+-                  }
+-                  else
+-                  {
++                  } else {
+                       pid = wait ((waitType *) 0);
+                   }
+                   if (pid == clientPid)
+@@ -391,8 +390,7 @@
+ {
+     char      **env = 0;
+ 
+-    if (d->setup && d->setup[0])
+-    {
++    if (d->setup && d->setup[0]) {
+       env = systemEnv (d, (char *) 0, (char *) 0);
+       (void) source (env, d->setup);
+       freeEnv (env);
+@@ -436,8 +434,7 @@
+     Debug ("Before XGrabServer %s\n", d->name);
+     XGrabServer (dpy);
+     if (XGrabKeyboard (dpy, DefaultRootWindow (dpy), True, GrabModeAsync,
+-                     GrabModeAsync, CurrentTime) != GrabSuccess)
+-    {
++                     GrabModeAsync, CurrentTime) != GrabSuccess) {
+       (void) alarm (0);
+       (void) Signal (SIGALRM, SIG_DFL);
+       LogError ("WARNING: keyboard on display %s could not be secured\n",
+@@ -448,8 +445,7 @@
+     (void) alarm (0);
+     (void) Signal (SIGALRM, SIG_DFL);
+     pseudoReset (dpy);
+-    if (!d->grabServer)
+-    {
++    if (!d->grabServer) {
+       XUngrabServer (dpy);
+       XSync (dpy, 0);
+     }
+@@ -460,8 +456,7 @@
+ UnsecureDisplay (struct display *d, Display *dpy)
+ {
+     Debug ("Unsecure display %s\n", d->name);
+-    if (d->grabServer)
+-    {
++    if (d->grabServer) {
+       XUngrabServer (dpy);
+       XSync (dpy, 0);
+     }
+@@ -487,8 +482,7 @@
+       kill (d->serverPid, d->resetSignal);
+     else
+       ResetServer (d);
+-    if (removeAuth)
+-    {
++    if (removeAuth) {
+       setgid (verify.gid);
+       setuid (verify.uid);
+       RemoveUserAuthorization (d, &verify);
+@@ -500,7 +494,7 @@
+ 
+           code = Krb5DisplayCCache(d->name, &ccache);
+           if (code)
+-              LogError("%s while getting Krb5 ccache to destroy\n",
++              LogError ("%s while getting Krb5 ccache to destroy\n",
+                        error_message(code));
+           else {
+               code = krb5_cc_destroy(ccache);
+@@ -508,7 +502,7 @@
+                   if (code == KRB5_FCC_NOFILE) {
+                       Debug ("No Kerberos ccache file found to destroy\n");
+                   } else
+-                      LogError("%s while destroying Krb5 credentials cache\n",
++                      LogError ("%s while destroying Krb5 credentials cache\n",
+                                error_message(code));
+               } else
+                   Debug ("Kerberos ccache destroyed\n");
+@@ -535,8 +529,9 @@
+ #ifdef HAS_SETUSERCONTEXT
+     struct passwd* pwd;
+ #endif
+-#ifdef USE_PAM 
+-    pam_handle_t *pamh = thepamh();
++#ifdef USE_PAM
++    pam_handle_t *pamh = thepamh ();
++    int       pam_error;
+ #endif
+ 
+     if (verify->argv) {
+@@ -552,7 +547,7 @@
+     }
+ #ifdef USE_PAM
+     if (pamh) pam_open_session(pamh, 0);
+-#endif    
 +#endif
- #if defined(CSRG_BASED)
- #include <pwd.h>
- #include <unistd.h>
-@@ -599,7 +604,11 @@
+     switch (pid = fork ()) {
+     case 0:
+       CleanUpChild ();
+@@ -577,34 +572,35 @@
+ 
+ #ifndef AIXV3
+ #ifndef HAS_SETUSERCONTEXT
+-      if (setgid(verify->gid) < 0)
+-      {
+-          LogError("setgid %d (user \"%s\") failed, errno=%d\n",
++      if (setgid(verify->gid) < 0) {
++          LogError ("setgid %d (user \"%s\") failed, errno=%d\n",
+                    verify->gid, name, errno);
+           return (0);
+       }
+ #if defined(BSD) && (BSD >= 199103)
+-      if (setlogin(name) < 0)
+-      {
+-          LogError("setlogin for \"%s\" failed, errno=%d", name, errno);
++      if (setlogin(name) < 0) {
++          LogError ("setlogin for \"%s\" failed, errno=%d", name, 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, errno=%d\n", name, errno);
+           return (0);
+       }
  #endif   /* QNX4 doesn't support multi-groups, no initgroups() */
  #ifdef USE_PAM
-       if (thepamh()) {
+-      if (thepamh()) {
 -          pam_setcred(thepamh(), PAM_ESTABLISH_CRED);
-+          if (pam_setcred(thepamh(), PAM_ESTABLISH_CRED) != PAM_SUCCESS) {
-+              LogError("pam_setcred for %\"s failed, errno=%d\n",
-+                       name, errno);
++      if (pamh) {
++          pam_error = pam_setcred (pamh, PAM_ESTABLISH_CRED);
++          if (pam_error != PAM_SUCCESS) {
++              LogError ("pam_setcred for \"%s\" failed: %s\n",
++                       name, pam_strerror(pamh, pam_error));
 +              return(0);
 +          }
        }
  #endif
-       if (setuid(verify->uid) < 0)
-@@ -652,6 +661,7 @@
+-      if (setuid(verify->uid) < 0)
+-      {
+-          LogError("setuid %d (user \"%s\") failed, errno=%d\n",
++      if (setuid(verify->uid) < 0) {
++          LogError ("setuid %d (user \"%s\") failed, errno=%d\n",
+                    verify->uid, name, errno);
+           return (0);
+       }
+@@ -614,19 +610,15 @@
+        * environment variables, resource limits, and umask.
+        */
+       pwd = getpwnam(name);
+-      if (pwd)
+-      {
+-          if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0)
+-          {
+-              LogError("setusercontext for \"%s\" failed, errno=%d\n", name,
++      if (pwd) {
++          if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0) {
++              LogError ("setusercontext for \"%s\" failed, errno=%d\n", name,
+                   errno);
+               return (0);
+           }
+           endpwent();
+-      }
+-      else
+-      {
+-          LogError("getpwnam for \"%s\" failed, errno=%d\n", name, errno);
++      } else {
++          LogError ("getpwnam for \"%s\" failed, errno=%d\n", name, errno);
+           return (0);
+       }
+ #endif /* HAS_SETUSERCONTEXT */
+@@ -635,9 +627,8 @@
+        * 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, errno=%d\n", name, errno);
+           return (0);
+       }
+ #endif /* AIXV3 */
+@@ -652,6 +643,7 @@
            char    netname[MAXNETNAMELEN+1], secretkey[HEXKEYBYTES+1];
            int     nameret, keyret;
            int     len;
@@ -6943,7 +7304,7 @@
            int     key_set_ok = 0;
  
            nameret = getnetname (netname);
-@@ -662,6 +672,13 @@
+@@ -662,34 +654,34 @@
            keyret = getsecretkey(netname,secretkey,passwd);
            Debug ("getsecretkey returns %d, key length %d\n",
                    keyret, strlen (secretkey));
@@ -6951,12 +7312,106 @@
 +          netst.st_netname = strdup(netname);
 +          memset(netst.st_pub_key, 0, HEXKEYBYTES);
 +            if (key_setnet(&netst) < 0) {
-+              Debug("Could not set secret key.\n");
++              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 (keyret == 1)
+-          {
+-              if (*secretkey)
+-              {
++          if (keyret == 1) {
++              if (*secretkey) {
+                   keyret = key_setsecret(secretkey);
+                   Debug ("key_setsecret returns %d\n", keyret);
+                   if (keyret == -1)
+                       LogError ("failed to set NIS secret key\n");
+                   else
+                       key_set_ok = 1;
+-              }
+-              else
+-              {
++              } else {
+                   /* found a key, but couldn't interpret it */
+                   LogError ("password incorrect for NIS principal \"%s\"\n",
+                             nameret ? netname : name);
+               }
+           }
+-          if (!key_set_ok)
+-          {
++          if (!key_set_ok) {
+               /* remove SUN-DES-1 from authorizations list */
+               int i, j;
+-              for (i = 0; i < d->authNum; i++)
+-              {
++              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--;
+@@ -714,11 +706,9 @@
+                   setEnv(verify->userEnviron,
+                          "KRB5CCNAME", Krb5CCacheName(d->name));
+           } else {
+-              for (i = 0; i < d->authNum; i++)
+-              {
++              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];
+@@ -773,8 +763,7 @@
+     if (file && file[0]) {
+       Debug ("source %s\n", file);
+       args = parseArgs ((char **) 0, file);
+-      if (!args)
+-      {
++      if (!args) {
+           args = args_safe;
+           args[0] = file;
+           args[1] = NULL;
+@@ -841,8 +830,7 @@
+       f = fopen (argv[0], "r");
+       if (!f)
+           return;
+-      if (fgets (program, sizeof (program) - 1, f) == NULL)
+-      {
++      if (fgets (program, sizeof (program) - 1, f) == NULL) {
+           fclose (f);
+           return;
+       }
+@@ -894,8 +882,7 @@
+     char    **env, **exp, *value;
+ 
+     env = 0;
+-    for (exp = exportList; exp && *exp; ++exp)
+-    {
++    for (exp = exportList; exp && *exp; ++exp) {
+       value = getenv (*exp);
+       if (value)
+           env = setEnv (env, *exp, value);
+@@ -907,13 +894,12 @@
+ systemEnv (struct display *d, char *user, char *home)
+ {
+     char      **env;
+-    
++
+     env = defaultEnv ();
+     env = setEnv (env, "DISPLAY", d->name);
+     if (home)
+       env = setEnv (env, "HOME", home);
+-    if (user)
+-    {
++    if (user) {
+       env = setEnv (env, "USER", user);
+       env = setEnv (env, "LOGNAME", user);
+     }
 Index: xc/programs/xdm/socket.c
 ===================================================================
 RCS file: /cvs/xc/programs/xdm/socket.c,v

Modified: branches/4.3.0/sid/debian/patches/002_xdm_fixes.diff
===================================================================
--- branches/4.3.0/sid/debian/patches/002_xdm_fixes.diff        2003-10-08 02:27:36 
UTC (rev 632)
+++ branches/4.3.0/sid/debian/patches/002_xdm_fixes.diff        2003-10-08 02:34:31 
UTC (rev 633)
@@ -4,7 +4,8 @@
 
 These patches do a number of things:
 
-Not submitted upstream yet.
+Submitted upstream to Matthieu Herrb on 2003-09-24.
+  + except for latest changes to genauth.c and session.c
 
 * xc/config/cf/gnu.cf:
     The Hurd has a pollable /dev/random device.
@@ -1824,8 +1825,8 @@
      }
      d->displayType = displayType;
 diff -urN xc/programs/xdm~/genauth.c xc/programs/xdm/genauth.c
---- xc/programs/xdm~/genauth.c 2003-09-21 15:39:23.000000000 -0500
-+++ xc/programs/xdm/genauth.c  2003-09-21 15:41:15.000000000 -0500
+--- xc/programs/xdm~/genauth.c 2003-10-07 18:06:53.000000000 -0500
++++ xc/programs/xdm/genauth.c  2003-10-07 18:07:41.000000000 -0500
 @@ -33,14 +33,16 @@
   * Author:  Keith Packard, MIT X Consortium
   */
@@ -1848,20 +1849,7 @@
  
  #include <time.h>
  #define Time_t time_t
-@@ -55,12 +57,6 @@
- 
- #ifdef HASXDMAUTH
- 
--typedef unsigned char auth_cblock[8]; /* block size */
--
--typedef struct auth_ks_struct { auth_cblock _; } auth_wrapper_schedule[16];
--
--extern void _XdmcpWrapperToOddParity();
--
- static void
- longtochars (long l, unsigned char *c)
- {
-@@ -336,7 +332,7 @@
+@@ -339,7 +341,7 @@
        if ((offset = sumFile (randomFile, BSIZ, SEEK_SET, 0)) == BSIZ)
            return;
      }
@@ -1870,7 +1858,7 @@
  }
  #endif /* !ARC4_RANDOM && !DEV_RANDOM */
  
-@@ -369,7 +365,7 @@
+@@ -372,7 +374,7 @@
            close(fd);
        }
      } else {
@@ -1879,7 +1867,7 @@
          randomDevice, errno);
      }
  #endif    
-@@ -455,10 +451,10 @@
+@@ -459,10 +461,10 @@
            return 1;
        }
        close(fd);
@@ -2553,136 +2541,141 @@
      XSetIOErrorHandler (oldError);
      return 1;
  }
---- xc/programs/xdm/session.c~ 2003-09-25 00:19:35.000000000 -0500
-+++ xc/programs/xdm/session.c  2003-09-25 00:29:10.000000000 -0500
-@@ -61,17 +61,17 @@
+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
- 
- #ifndef GREET_USER_STATIC
--#include <dlfcn.h>
--#ifndef RTLD_NOW
--#define RTLD_NOW 1
--#endif
-+# include <dlfcn.h>
-+# ifndef RTLD_NOW
-+#  define RTLD_NOW 1
-+# endif
- #endif
- 
- static        int     runAndWait (char **args, char **environ);
- 
--#if defined(CSRG_BASED) || defined(__osf__) || defined(__DARWIN__) || 
defined(__QNXNTO__) || defined(sun)
--#include <sys/types.h>
--#include <grp.h>
-+#if defined(CSRG_BASED) || defined(__osf__) || defined(__DARWIN__) || 
defined(__QNXNTO__) || defined(sun) || defined(__GLIBC__)
-+# include <sys/types.h>
-+# include <grp.h>
+ #ifdef K5AUTH
+ # include <krb5/krb5.h>
+@@ -74,44 +74,44 @@
+ # include <grp.h>
  #else
  /* should be in <grp.h> */
- extern        void    setgrent(void);
-@@ -87,28 +87,34 @@
- extern        void    endspent(void);
+-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)
--#include <pwd.h>
--#include <unistd.h>
-+
-+#if defined(CSRG_BASED) || defined(__GLIBC__)
-+# include <pwd.h>
-+# include <unistd.h>
+ #if defined(CSRG_BASED) || defined(__GLIBC__)
+ # include <pwd.h>
+ # include <unistd.h>
  #else
- extern        struct passwd   *getpwnam(GETPWNAM_ARGS);
--#ifdef linux
-+# ifdef linux
- extern  void  endpwent(void);
--#endif
-+# endif
-+# ifndef __GLIBC__
- extern        char    *crypt(CRYPT_ARGS);
-+# endif
+-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()
-+pam_handle_t **
-+thepamhp ()
+ pam_handle_t **
+-thepamhp(void)
++thepamhp (void)
  {
        static pam_handle_t *pamh = NULL;
        return &pamh;
  }
  
--pam_handle_t *thepamh()
-+pam_handle_t *
-+thepamh ()
+ pam_handle_t *
+-thepamh(void)
++thepamh (void)
  {
        pam_handle_t **pamhp;
  
 -      pamhp = thepamhp();
-+    pamhp = thepamhp ();
++      pamhp = thepamhp ();
        if (pamhp)
                return *pamhp;
        else
-@@ -141,12 +147,12 @@
-       endgrent,
- #ifdef USESHADOW
-       getspnam,
--#ifndef QNX4
-+# ifndef QNX4
-       endspent,
--#endif /* QNX4 doesn't use endspent */
-+# endif /* QNX4 doesn't use endspent */
+@@ -158,7 +158,7 @@
  #endif
-       getpwnam,
--#ifdef linux
-+#if defined(linux) || defined(__GLIBC__)
-       endpwent,
- #endif
-       crypt,
-@@ -194,7 +200,7 @@
- }
+       };
  
- #if defined(_POSIX_SOURCE) || defined(SYSV) || defined(SVR4)
--#define killpg(pgrp, sig) kill(-(pgrp), sig)
-+# define killpg(pgrp, sig) kill(-(pgrp), sig)
- #endif
- 
- static void
-@@ -251,7 +257,7 @@
+-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));
-+    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);
++    LogError ("fatal IO error %d (%s)\n", errno, _SysErrorMsg (errno));
++    exit (RESERVER_DISPLAY);
      /*NOTREACHED*/
      return 0;
-@@ -260,7 +266,7 @@
+ }
+ 
  static int
- ErrorHandler(Display *dpy, XErrorEvent *event)
+-ErrorHandler(Display *dpy, XErrorEvent *event)
++ErrorHandler (Display *dpy, XErrorEvent *event)
  {
--    LogError("X error\n");
-+    LogError ("X error\n");
+     LogError ("X error\n");
      if (XmuPrintDefaultErrorMessage (dpy, event, stderr) == 0) return 0;
-     exit(UNMANAGE_DISPLAY);
+-    exit(UNMANAGE_DISPLAY);
++    exit (UNMANAGE_DISPLAY);
      /*NOTREACHED*/
-@@ -293,13 +299,13 @@
- #ifdef GREET_USER_STATIC
+ }
+ 
+@@ -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);
-+    Debug ("ManageSession: loading greeter library %s\n", greeterLib);
-     greet_lib_handle = dlopen(greeterLib, RTLD_NOW);
+     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");
-     if (greet_user_proc == NULL)
-       {
--      LogError("%s while loading %s\n", dlerror(), greeterLib);
+-      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);
++      exit (UNMANAGE_DISPLAY);
        }
  #endif
-@@ -321,7 +327,7 @@
+ 
+@@ -321,11 +321,11 @@
             *     setting up environment and running the session
             */
            if (StartClient (&verify, d, &clientPid, greet.name, greet.password)) {
@@ -2691,7 +2684,12 @@
  
  #ifndef GREET_USER_STATIC
                  /* Save memory; close library */
-@@ -369,7 +375,7 @@
+-                dlclose(greet_lib_handle);
++                dlclose (greet_lib_handle);
+ #endif
+ 
+               /*
+@@ -363,7 +363,7 @@
      /*
       * run system-wide reset file
       */
@@ -2700,7 +2698,7 @@
      source (verify.systemEnviron, d->reset);
      SessionExit (d, OBEYSESS_DISPLAY, TRUE);
  }
-@@ -384,7 +390,7 @@
+@@ -378,7 +378,7 @@
        env = systemEnv (d, (char *) 0, (char *) 0);
        args = parseArgs ((char **) 0, d->xrdb);
        args = parseArgs (args, d->resources);
@@ -2709,7 +2707,24 @@
        (void) runAndWait (args, env);
        freeArgs (args);
        freeEnv (env);
-@@ -438,7 +444,7 @@
+@@ -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);
@@ -2717,30 +2732,50 @@
 +    Debug ("before XGrabServer %s\n", d->name);
      XGrabServer (dpy);
      if (XGrabKeyboard (dpy, DefaultRootWindow (dpy), True, GrabModeAsync,
-                      GrabModeAsync, CurrentTime) != GrabSuccess)
-@@ -505,16 +511,16 @@
+                      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);
++          code = Krb5DisplayCCache (d->name, &ccache);
            if (code)
--              LogError("%s while getting Krb5 ccache to destroy\n",
+               LogError ("%s while getting Krb5 ccache to destroy\n",
 -                       error_message(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);
++              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",
+                       LogError ("%s while destroying Krb5 credentials cache\n",
 -                               error_message(code));
-+                      LogError ("%s while destroying Krb5 credentials"
-+                                " cache\n", error_message(code));
++                               error_message (code));
                } else
                    Debug ("Kerberos ccache destroyed\n");
-               krb5_cc_close(ccache);
-@@ -522,7 +528,7 @@
+-              krb5_cc_close(ccache);
++              krb5_cc_close (ccache);
+           }
        }
  #endif /* K5AUTH */
      }
@@ -2749,24 +2784,42 @@
      exit (status);
  }
  
-@@ -540,8 +546,9 @@
- #ifdef HAS_SETUSERCONTEXT
-     struct passwd* pwd;
+@@ -546,14 +546,14 @@
+       Debug ("\n");
+     }
+ #ifdef USE_PAM
+-    if (pamh) pam_open_session(pamh, 0);
++    if (pamh) pam_open_session (pamh, 0);
  #endif
--#ifdef USE_PAM 
-+#ifdef USE_PAM
-     pam_handle_t *pamh = thepamh();
-+    int pam_error;
+     switch (pid = fork ()) {
+     case 0:
+       CleanUpChild ();
+ #ifdef XDMCP
+       /* The chooser socket is not closed by CleanUpChild() */
+-      DestroyWellKnownSockets();
++      DestroyWellKnownSockets ();
  #endif
  
-     if (verify->argv) {
-@@ -582,39 +589,38 @@
+       /* 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",
+-      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",
@@ -2774,9 +2827,8 @@
            return (0);
        }
  #if defined(BSD) && (BSD >= 199103)
--      if (setlogin(name) < 0)
--      {
--          LogError("setlogin for \"%s\" failed, errno=%d", name, errno);
+-      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,
@@ -2785,9 +2837,8 @@
        }
  #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, errno=%d\n", name, errno);
 +      if (initgroups (name, verify->gid) < 0) {
 +          LogError ("initgroups for \"%s\" failed: %s\n", name,
 +                   _SysErrorMsg (errno));
@@ -2795,23 +2846,22 @@
        }
  #endif   /* QNX4 doesn't support multi-groups, no initgroups() */
  #ifdef USE_PAM
--      if (thepamh()) {
--          if (pam_setcred(thepamh(), PAM_ESTABLISH_CRED) != PAM_SUCCESS) {
--              LogError("pam_setcred for %\"s failed, errno=%d\n",
--                       name, errno);
--              return(0);
+-      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) {
+           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 (thepamh (), pam_error));
++                        pam_strerror (pamh, pam_error));
 +              return (0);
            }
        }
  #endif
--      if (setuid(verify->uid) < 0)
--      {
--          LogError("setuid %d (user \"%s\") failed, errno=%d\n",
+-      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",
@@ -2819,50 +2869,43 @@
            return (0);
        }
  #else /* HAS_SETUSERCONTEXT */
-@@ -622,20 +628,17 @@
+@@ -609,16 +611,17 @@
         * Set the user's credentials: uid, gid, groups,
         * environment variables, resource limits, and umask.
         */
 -      pwd = getpwnam(name);
--      if (pwd)
--      {
--          if (setusercontext(NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0)
--          {
--              LogError("setusercontext for \"%s\" failed, errno=%d\n", 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);
-+      pwd = getpwnam (name);
-+      if (pwd) {
 +          if (setusercontext (NULL, pwd, pwd->pw_uid, LOGIN_SETALL) < 0) {
 +              LogError ("setusercontext for \"%s\" failed: %s\n", name,
 +                        _SysErrorMsg (errno));
                return (0);
            }
 -          endpwent();
--      }
--      else
--      {
--          LogError("getpwnam for \"%s\" failed, errno=%d\n", name, errno);
 +          endpwent ();
-+      } else {
+       } 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 */
-@@ -644,9 +647,9 @@
+@@ -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, errno=%d\n", name, errno);
 +      if (setpcred (name, NULL) == -1) {
 +          LogError ("setpcred for \"%s\" failed: %s\n", name,
 +                    _SysErrorMsg (errno));
            return (0);
        }
  #endif /* AIXV3 */
-@@ -665,7 +668,7 @@
+@@ -647,24 +651,24 @@
            int     key_set_ok = 0;
  
            nameret = getnetname (netname);
@@ -2871,16 +2914,89 @@
            len = strlen (passwd);
            if (len > 8)
                bzero (passwd + 8, len - 8);
-@@ -676,7 +679,7 @@
-           netst.st_netname = strdup(netname);
-           memset(netst.st_pub_key, 0, HEXKEYBYTES);
-             if (key_setnet(&netst) < 0) {
--              Debug("Could not set secret key.\n");
-+              Debug ("could not set secret key\n");
+-          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);     
++          free (netst.st_netname);
            /* is there a key, and do we have the right password? */
-@@ -759,22 +762,22 @@
+           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);
@@ -2909,7 +3025,7 @@
        Debug ("StartSession, fork succeeded %d\n", pid);
        *pidp = pid;
        return 1;
-@@ -885,7 +888,7 @@
+@@ -856,7 +860,7 @@
            p = "/bin/sh";
            optarg = 0;
        }
@@ -2918,7 +3034,7 @@
                p, optarg ? optarg : "(null)");
        for (av = argv, argc = 0; *av; av++, argc++)
            /* SUPPRESS 530 */
-@@ -941,9 +944,10 @@
+@@ -910,9 +914,10 @@
      return env;
  }
  

Modified: branches/4.3.0/sid/debian/patches/067_fix_X11_and_xdm_build_problems.diff
===================================================================
--- branches/4.3.0/sid/debian/patches/067_fix_X11_and_xdm_build_problems.diff   
2003-10-08 02:27:36 UTC (rev 632)
+++ branches/4.3.0/sid/debian/patches/067_fix_X11_and_xdm_build_problems.diff   
2003-10-08 02:34:31 UTC (rev 633)
@@ -9,10 +9,6 @@
 xc/programs/xdm/Imakefile has exactly the same problem with exactly the
 same file, plus the same problem with the greeter's header files.
 
-xc/programs/xdm/genauth.c had some problems with attempting to use
-variables that weren't defined, plus an attempt to compare the integer
-prngdPort with NULL.
-
 --- xc/lib/X11/Imakefile~      2003-09-18 01:12:10.000000000 -0500
 +++ xc/lib/X11/Imakefile       2003-09-18 01:13:32.000000000 -0500
 @@ -49,7 +49,7 @@
@@ -59,35 +55,3 @@
  #if BuildBoth
  ObjectFromSpecialSource(greetsh,greet,-DUSESHADOW)
  ObjectFromSpecialSource(verifysh,verify,-DUSESHADOW)
---- xc/programs/xdm~/genauth.c 2003-09-22 14:00:07.000000000 -0500
-+++ xc/programs/xdm/genauth.c  2003-09-22 16:57:56.000000000 -0500
-@@ -47,9 +47,7 @@
- #include <time.h>
- #define Time_t time_t
- 
--#if !defined(ARC4_RANDOM) && !defined(DEV_RANDOM) && !defined(HASXDMAUTH)
- static unsigned char  key[8];
--#endif
- 
- #ifdef DEV_RANDOM
- extern char   *randomDevice;
-@@ -370,8 +368,8 @@
-     }
- #endif    
-     /*  Try some pseudo-random number genrator daemon next */
--    if (prngdSocket != NULL || prngdPort != NULL) {
--          if (get_prngd_bytes(tmpkey, len, prngdPort, prngdSocket) == 0) {
-+    if (prngdSocket != NULL || prngdPort != 0) {
-+          if (get_prngd_bytes(tmpkey, 8, prngdPort, prngdSocket) == 0) {
-                   tmpkey[0] = 0;
-                   _XdmcpWrapperToOddParity(tmpkey, key);
-                   return;
-@@ -398,7 +396,7 @@
- GenerateAuthData (char *auth, int len)
- {
- #ifdef HASXDMAUTH
--    int                   bit;
-+    int                   i, bit;
-     auth_wrapper_schedule    schedule;
-     unsigned char         data[8];
-     static int            xdmcpAuthInited;


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to