Blob Blame History Raw
Change to the user's directory after dropping privileges, in case it is only
accessible to the user (for example, if it's in NFS with root squashing).
Incomplete - we probably need to do the same for rshd and ftpd.

diff -up krb5/src/appl/bsd/login.c krb5/src/appl/bsd/login.c
--- krb5/src/appl/bsd/login.c	2007-07-11 13:50:34.000000000 -0400
+++ krb5/src/appl/bsd/login.c	2007-07-11 13:50:36.000000000 -0400
@@ -1497,13 +1497,8 @@ int main(argc, argv)
     }
 #endif /* USE_PAM */
 
-    if (chdir(pwd->pw_dir) < 0) {
-	printf("No directory %s!\n", pwd->pw_dir);
-	if (chdir("/"))
-	    exit(0);
-	pwd->pw_dir = "/";
-	printf("Logging in with home = \"/\".\n");
-    }
+    if (chdir("/"))
+	exit(0);
 
     /* nothing else left to fail -- really log in */
     {
@@ -1710,6 +1705,14 @@ int main(argc, argv)
 	sleepexit(1);
     }
 
+    if (chdir(pwd->pw_dir) < 0) {
+	printf("No directory %s!\n", pwd->pw_dir);
+	if (chdir("/"))
+	    exit(0);
+	pwd->pw_dir = "/";
+	printf("Logging in with home = \"/\".\n");
+    }
+
     /*
      * We are the user now.  Re-create the destroyed ccache and
      * ticket file.