diff -Pur util-linux.orig/login-utils/Makefile util-linux/login-utils/Makefile
--- util-linux.orig/login-utils/Makefile	Thu Jun 26 15:56:09 1997
+++ util-linux/login-utils/Makefile	Sat Jun 27 02:35:06 1998
@@ -94,7 +94,7 @@
 
 ifeq "$(HAVE_PAM)" "yes"
 login: login.o 
-	$(CC) -o $@ $^ $(CRYPT) $(PAM)
+	$(CC) -o $@ $^ $(CRYPT) $(PAM) -ltmpdir
 else
 login: login.o checktty.o 
 	$(CC) -o $@ $^ $(CRYPT) 
diff -Pur util-linux.orig/login-utils/login.c util-linux/login-utils/login.c
--- util-linux.orig/login-utils/login.c	Fri Jun 26 21:41:19 1998
+++ util-linux/login-utils/login.c	Sat Jun 27 02:34:48 1998
@@ -139,6 +139,8 @@
 #  include <shadow.h>
 #endif
 
+#include <tmpdir.h>
+
 #ifdef USE_PAM
 #  include <security/pam_appl.h>
 #  include <security/pam_misc.h>
@@ -983,7 +985,10 @@
     signal(SIGINT, SIG_DFL);
     signal(SIGTSTP, SIG_IGN);
     signal(SIGHUP, SIG_DFL);
-    
+
+    if (mkusertemp(pwd->pw_name, pwd->pw_uid, pwd->pw_gid))
+	printf("Couldn't set temporary directory!\n");
+
     /* discard permissions last so can't get killed and drop core */
     if(setuid(pwd->pw_uid) < 0 && pwd->pw_uid) {
 	syslog(LOG_ALERT, "setuid() failed");

