diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2022-01-22 08:00:00 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2022-01-22 08:00:00 +0000 |
commit | f43cfa1a97776ba995437800b75e9dc77ef82349 (patch) | |
tree | 59ad6d0dd08f450fdbfcb8c6e1edebb246886bce /modules/pam_sepermit/pam_sepermit.c | |
parent | 950d043edf4cf07c5a43e95d930bc0e3ddce875b (diff) | |
download | pam-f43cfa1a97776ba995437800b75e9dc77ef82349.tar.gz pam-f43cfa1a97776ba995437800b75e9dc77ef82349.tar.bz2 pam-f43cfa1a97776ba995437800b75e9dc77ef82349.zip |
pam_sepermit: fix conf= option support
The parser of conf= option failed to recognize the option unless
it was specified without an argument, making it useless.
* modules/pam_sepermit/pam_sepermit.c: Include "pam_inline.h".
(pam_sm_authenticate): Fix parsing of conf= option.
* modules/pam_sepermit/tst-pam_sepermit-retval.c: Check conf= option.
Co-authored-by: Stefan Schubert <schubi@suse.de>
Resolves: https://github.com/linux-pam/linux-pam/pull/429
Diffstat (limited to 'modules/pam_sepermit/pam_sepermit.c')
-rw-r--r-- | modules/pam_sepermit/pam_sepermit.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/modules/pam_sepermit/pam_sepermit.c b/modules/pam_sepermit/pam_sepermit.c index f7d98d5b..ce6e1453 100644 --- a/modules/pam_sepermit/pam_sepermit.c +++ b/modules/pam_sepermit/pam_sepermit.c @@ -61,6 +61,8 @@ #include <selinux/selinux.h> +#include "pam_inline.h" + #define MODULE "pam_sepermit" #define OPT_DELIM ":" @@ -374,11 +376,14 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED, /* Parse arguments. */ for (i = 0; i < argc; i++) { + const char *str; + if (strcmp(argv[i], "debug") == 0) { debug = 1; - } - if (strcmp(argv[i], "conf=") == 0) { - cfgfile = argv[i] + 5; + } else if ((str = pam_str_skip_prefix(argv[i], "conf=")) != NULL) { + cfgfile = str; + } else { + pam_syslog(pamh, LOG_ERR, "unknown option: %s", argv[i]); } } |