c2a452
diff -up Linux-PAM-1.1.8/modules/pam_mkhomedir/mkhomedir_helper.c.mkhomedir-inroot Linux-PAM-1.1.8/modules/pam_mkhomedir/mkhomedir_helper.c
c2a452
--- Linux-PAM-1.1.8/modules/pam_mkhomedir/mkhomedir_helper.c.mkhomedir-inroot	2013-06-18 16:11:21.000000000 +0200
c2a452
+++ Linux-PAM-1.1.8/modules/pam_mkhomedir/mkhomedir_helper.c	2017-11-03 10:20:59.823998481 +0100
c2a452
@@ -352,16 +352,18 @@ make_parent_dirs(char *dir, int make)
c2a452
   char *cp = strrchr(dir, '/');
c2a452
   struct stat st;
c2a452
 
c2a452
-  if (!cp || cp == dir)
c2a452
+  if (!cp)
c2a452
     return rc;
c2a452
 
c2a452
-  *cp = '\0';
c2a452
-  if (stat(dir, &st) && errno == ENOENT)
c2a452
-    rc = make_parent_dirs(dir, 1);
c2a452
-  *cp = '/';
c2a452
+  if (cp != dir) {
c2a452
+    *cp = '\0';
c2a452
+    if (stat(dir, &st) && errno == ENOENT)
c2a452
+      rc = make_parent_dirs(dir, 1);
c2a452
+    *cp = '/';
c2a452
 
c2a452
-  if (rc != PAM_SUCCESS)
c2a452
-    return rc;
c2a452
+    if (rc != PAM_SUCCESS)
c2a452
+      return rc;
c2a452
+  }
c2a452
 
c2a452
   if (make && mkdir(dir, 0755) && errno != EEXIST) {
c2a452
     pam_syslog(NULL, LOG_ERR, "unable to create directory %s: %m", dir);