summaryrefslogtreecommitdiff
path: root/debian/patches/pam_mkhomedir_stat_before_opendir
blob: 500262256ff6f85b149a237e210535b00fbd2a87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
From: Sam Hartman <hartmans@debian.org>
Date: Mon, 11 Sep 2023 14:00:42 -0600
Subject: pam_mkhomedir_stat_before_opendir

===================================================================
---
 modules/pam_mkhomedir/mkhomedir_helper.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/modules/pam_mkhomedir/mkhomedir_helper.c b/modules/pam_mkhomedir/mkhomedir_helper.c
index 3213f02..643d5d0 100644
--- a/modules/pam_mkhomedir/mkhomedir_helper.c
+++ b/modules/pam_mkhomedir/mkhomedir_helper.c
@@ -39,6 +39,7 @@ create_homedir(const struct passwd *pwd,
    DIR *d;
    struct dirent *dent;
    int retval = PAM_SESSION_ERR;
+   struct stat stat_buf;
 
    /* Create the new directory */
    if (mkdir(dest, 0700) && errno != EEXIST)
@@ -54,6 +55,12 @@ create_homedir(const struct passwd *pwd,
       goto go_out;
    }
 
+   /* Various things such as an autofs mount with browsing disabled
+    * can cause the directory to appear only on stat.  The intent is
+    * to minimize network traversal when a file explorer tries to
+    * traverse large chunks of a directory tree.  So stat first.*/
+   stat(source, &stat_buf);
+   
    /* Scan the directory */
    d = opendir(source);
    if (d == NULL)