You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
987 B
29 lines
987 B
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 |
|
--- Linux-PAM-1.1.8/modules/pam_mkhomedir/mkhomedir_helper.c.mkhomedir-inroot 2013-06-18 16:11:21.000000000 +0200 |
|
+++ Linux-PAM-1.1.8/modules/pam_mkhomedir/mkhomedir_helper.c 2017-11-03 10:20:59.823998481 +0100 |
|
@@ -352,16 +352,18 @@ make_parent_dirs(char *dir, int make) |
|
char *cp = strrchr(dir, '/'); |
|
struct stat st; |
|
|
|
- if (!cp || cp == dir) |
|
+ if (!cp) |
|
return rc; |
|
|
|
- *cp = '\0'; |
|
- if (stat(dir, &st) && errno == ENOENT) |
|
- rc = make_parent_dirs(dir, 1); |
|
- *cp = '/'; |
|
+ if (cp != dir) { |
|
+ *cp = '\0'; |
|
+ if (stat(dir, &st) && errno == ENOENT) |
|
+ rc = make_parent_dirs(dir, 1); |
|
+ *cp = '/'; |
|
|
|
- if (rc != PAM_SUCCESS) |
|
- return rc; |
|
+ if (rc != PAM_SUCCESS) |
|
+ return rc; |
|
+ } |
|
|
|
if (make && mkdir(dir, 0755) && errno != EEXIST) { |
|
pam_syslog(NULL, LOG_ERR, "unable to create directory %s: %m", dir);
|
|
|