diff -Pur sh-utils.orig/src/su.c sh-utils/src/su.c
--- sh-utils.orig/src/su.c	Sat Jun 27 01:18:34 1998
+++ sh-utils/src/su.c	Sat Jun 27 01:50:46 1998
@@ -128,6 +128,8 @@
 #include <shadow.h>
 #endif
 
+#include <tmpdir.h>
+
 #include "error.h"
 
 #ifdef HAVE_PATHS_H
@@ -470,6 +472,8 @@
 static void
 change_identity (const struct passwd *pw)
 {
+  if (mkusertemp(pw->pw_name, pw->pw_uid, pw->pw_gid))
+    error (0, errno, _("cannot create temporary directory"));
 #ifdef HAVE_INITGROUPS
   errno = 0;
   if (initgroups (pw->pw_name, pw->pw_gid) == -1)

