aboutsummaryrefslogtreecommitdiff
path: root/modules/pam_faillock/pam_faillock.c
diff options
context:
space:
mode:
authorStefan Schubert <schubi@suse.de>2022-01-10 10:57:54 +0100
committerDmitry V. Levin <ldv@altlinux.org>2022-02-01 13:17:40 +0000
commit5896ae50af24a5402eee3bdeb782fb5736daf3cb (patch)
tree58b6eddc88940f639e5a2c355715d7bb27822407 /modules/pam_faillock/pam_faillock.c
parentc11b0f5d8f9f6abcc76594af9e3b5e647b19f61f (diff)
downloadpam-5896ae50af24a5402eee3bdeb782fb5736daf3cb.tar.gz
pam-5896ae50af24a5402eee3bdeb782fb5736daf3cb.tar.bz2
pam-5896ae50af24a5402eee3bdeb782fb5736daf3cb.zip
pam_faillock: use vendor specific faillock.conf as fallback
Use the vendor directory defined by --enable-vendordir=DIR configure option as fallback for the distribution provided default config file if there is no configuration in /etc. * modules/pam_faillock/pam_faillock.8.xml: Describe this. * modules/pam_faillock/faillock.h [VENDOR_SCONFIGDIR] (VENDOR_FAILLOCK_DEFAULT_CONF): New macro. * modules/pam_faillock/pam_faillock.c (read_config_file) [VENDOR_FAILLOCK_DEFAULT_CONF]: Try to open VENDOR_FAILLOCK_DEFAULT_CONF file when FAILLOCK_DEFAULT_CONF file does not exist. Co-authored-by: Dmitry V. Levin <ldv@altlinux.org> Resolves: https://github.com/linux-pam/linux-pam/pull/423
Diffstat (limited to 'modules/pam_faillock/pam_faillock.c')
-rw-r--r--modules/pam_faillock/pam_faillock.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/modules/pam_faillock/pam_faillock.c b/modules/pam_faillock/pam_faillock.c
index 8328fbae..932d4281 100644
--- a/modules/pam_faillock/pam_faillock.c
+++ b/modules/pam_faillock/pam_faillock.c
@@ -192,6 +192,15 @@ read_config_file(pam_handle_t *pamh, struct options *opts, const char *cfgfile)
char linebuf[FAILLOCK_CONF_MAX_LINELEN+1];
f = fopen(cfgfile, "r");
+#ifdef VENDOR_FAILLOCK_DEFAULT_CONF
+ if (f == NULL && errno == ENOENT && cfgfile == default_faillock_conf) {
+ /*
+ * If the default configuration file in /etc does not exist,
+ * try the vendor configuration file as fallback.
+ */
+ f = fopen(VENDOR_FAILLOCK_DEFAULT_CONF, "r");
+ }
+#endif
if (f == NULL) {
/* ignore non-existent default config file */
if (errno == ENOENT && cfgfile == default_faillock_conf)