aboutsummaryrefslogtreecommitdiff
path: root/modules/pam_sepermit/pam_sepermit.c
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2022-01-22 08:00:00 +0000
committerDmitry V. Levin <ldv@altlinux.org>2022-01-22 08:00:00 +0000
commitf43cfa1a97776ba995437800b75e9dc77ef82349 (patch)
tree59ad6d0dd08f450fdbfcb8c6e1edebb246886bce /modules/pam_sepermit/pam_sepermit.c
parent950d043edf4cf07c5a43e95d930bc0e3ddce875b (diff)
downloadpam-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.c11
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]);
}
}