summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChangqing Li <changqing.li@windriver.com>2021-01-12 14:45:34 +0800
committerTomáš Mráz <tm@t8m.info>2021-01-27 08:36:28 +0100
commitd54870f993e97fe75e2cd0470a3701d5af22877c (patch)
tree1bcd720a232d15778839842f6aef1fd2986f7518
parente842a5fc075002f46672ebcd8e896624f1ec8068 (diff)
downloadlinux-pam-git-d54870f993e97fe75e2cd0470a3701d5af22877c.tar.gz
faillock: create tallydir before creating tallyfile
The default tallydir is "/var/run/faillock", and this default tallydir may not exist. Function open may fail as tallydir does not exist when creating the tallyfile. Therefore, faillock will not work well. Fix this problem by creating tallydir before creating tallyfile when the tallydir does not exist. Signed-off-by: Changqing Li <changqing.li@windriver.com>
-rw-r--r--modules/pam_faillock/faillock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/modules/pam_faillock/faillock.c b/modules/pam_faillock/faillock.c
index 4ea94cbe..091f253a 100644
--- a/modules/pam_faillock/faillock.c
+++ b/modules/pam_faillock/faillock.c
@@ -74,6 +74,9 @@ open_tally (const char *dir, const char *user, uid_t uid, int create)
if (create) {
flags |= O_CREAT;
+ if (access(dir, F_OK) != 0) {
+ mkdir(dir, 0755);
+ }
}
fd = open(path, flags, 0660);