summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Labiuk <m.labyuk@omprussia.ru>2020-10-12 21:14:39 +0300
committerTomáš Mráz <tmraz@redhat.com>2020-10-13 12:18:58 +0200
commit11a8fda7911f5e17448d148734aaa4ddb8b19b75 (patch)
tree5b2f08f05e10acb2e0def630437eb5f1328c7e34
parent491e5500b6b3913f531574208274358a2df88659 (diff)
downloadlinux-pam-git-11a8fda7911f5e17448d148734aaa4ddb8b19b75.tar.gz
pam_faillock: fix invalid error message
args_parse function pass "conf=" argument to set_conf_opt() after handling by self. set_conf_opt is not able to handle "conf" argument and write error: sddm-helper[415]: pam_faillock(sddm:auth): Unknown option: conf
-rw-r--r--modules/pam_faillock/pam_faillock.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/modules/pam_faillock/pam_faillock.c b/modules/pam_faillock/pam_faillock.c
index 71988d09..ea177260 100644
--- a/modules/pam_faillock/pam_faillock.c
+++ b/modules/pam_faillock/pam_faillock.c
@@ -109,6 +109,7 @@ args_parse(pam_handle_t *pamh, int argc, const char **argv,
int flags, struct options *opts)
{
int i;
+ int config_arg_index = -1;
int rv;
const char *conf = default_faillock_conf;
@@ -121,10 +122,12 @@ args_parse(pam_handle_t *pamh, int argc, const char **argv,
opts->root_unlock_time = MAX_TIME_INTERVAL+1;
for (i = 0; i < argc; ++i) {
- const char *str;
+ const char *str = pam_str_skip_prefix(argv[i], "conf=");
- if ((str = pam_str_skip_prefix(argv[i], "conf=")) != NULL)
+ if (str != NULL) {
conf = str;
+ config_arg_index = i;
+ }
}
if ((rv = read_config_file(pamh, opts, conf)) != PAM_SUCCESS) {
@@ -134,7 +137,10 @@ args_parse(pam_handle_t *pamh, int argc, const char **argv,
}
for (i = 0; i < argc; ++i) {
- if (strcmp(argv[i], "preauth") == 0) {
+ if (i == config_arg_index) {
+ continue;
+ }
+ else if (strcmp(argv[i], "preauth") == 0) {
opts->action = FAILLOCK_ACTION_PREAUTH;
}
else if (strcmp(argv[i], "authfail") == 0) {