--- /dev/null
+diff -Nur XFree86-4.0.2.org/xc/programs/xdm/greeter/verify.c XFree86-4.0.2/xc/programs/xdm/greeter/verify.c
+--- XFree86-4.0.2.org/xc/programs/xdm/greeter/verify.c Wed Nov 29 17:46:09 2000
++++ XFree86-4.0.2/xc/programs/xdm/greeter/verify.c Thu Dec 21 12:02:33 2000
+@@ -114,6 +114,7 @@
+
+ #ifdef USE_PAM
+ static char *PAM_password;
++extern pam_handle_t *pamh;
+ static int pam_error;
+
+ static int PAM_conv (int num_msg,
+@@ -162,12 +163,8 @@
+ Verify (struct display *d, struct greet_info *greet, struct verify_info *verify)
+ {
+ struct passwd *p;
+-#ifdef USE_PAM
+- pam_handle_t **pamhp = thepamhp();
+-#else
+ #ifdef USESHADOW
+ struct spwd *sp;
+-#endif
+ #endif
+ #ifdef __OpenBSD__
+ char *s;
+diff -Nur XFree86-4.0.2.org/xc/programs/xdm/session.c XFree86-4.0.2/xc/programs/xdm/session.c
+--- XFree86-4.0.2.org/xc/programs/xdm/session.c Tue Dec 5 01:59:35 2000
++++ XFree86-4.0.2/xc/programs/xdm/session.c Thu Dec 21 12:06:41 2000
+@@ -97,9 +97,9 @@
+ extern char *crypt(CRYPT_ARGS);
+ #endif
+ #ifdef USE_PAM
++pam_handle_t *pamh;
+ pam_handle_t **thepamhp()
+ {
+- static pam_handle_t *pamh = NULL;
+ return &pamh;
+ }
+
+@@ -472,9 +472,6 @@
+ SessionExit (struct display *d, int status, int removeAuth)
+ {
+ #ifdef USE_PAM
+- pam_handle_t *pamh = thepamh();
+-#endif
+-#ifdef USE_PAM
+ if (pamh) {
+ /* shutdown PAM session */
+ pam_close_session(pamh, 0);
+@@ -535,9 +532,6 @@
+ int pid;
+ #ifdef HAS_SETUSERCONTEXT
+ struct passwd* pwd;
+-#endif
+-#ifdef USE_PAM
+- pam_handle_t *pamh = thepamh();
+ #endif
+
+ if (verify->argv) {