summaryrefslogtreecommitdiff
path: root/pam
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2020-01-24 00:47:24 +0100
committerBastien Nocera <hadess@hadess.net>2020-01-24 00:51:13 +0100
commit42f5280a030f2e2065d72d42db71cecd69547528 (patch)
treeddbec440a9e15fa793f9e3fbb1f70375256cd8ea /pam
parentaffffaf134f52dc01fbdb66b81172d983fbf74b2 (diff)
pam: Better debug arguments support
Support debug=[on|off|true|false|1|0] as an option in addition to "debug".
Diffstat (limited to 'pam')
-rw-r--r--pam/pam_fprintd.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/pam/pam_fprintd.c b/pam/pam_fprintd.c
index 20e7975..2b3bf0b 100644
--- a/pam/pam_fprintd.c
+++ b/pam/pam_fprintd.c
@@ -46,6 +46,7 @@
#define DEFAULT_MAX_TRIES 3
#define DEFAULT_TIMEOUT 30
+#define DEBUG_MATCH "debug="
#define MAX_TRIES_MATCH "max-tries="
#define TIMEOUT_MATCH "timeout="
@@ -623,6 +624,23 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc,
if (str_equal (argv[i], "debug")) {
pam_syslog (pamh, LOG_DEBUG, "debug on");
debug = true;
+ } else if (str_has_prefix (argv[i], DEBUG_MATCH)) {
+ pam_syslog (pamh, LOG_DEBUG, "debug on");
+ const char *value;
+
+ value = argv[i] + strlen (DEBUG_MATCH);
+ if (str_equal (value, "on") ||
+ str_equal (value, "true") ||
+ str_equal (value, "1")) {
+ pam_syslog (pamh, LOG_DEBUG, "debug on");
+ debug = true;
+ } else if (str_equal (value, "off") ||
+ str_equal (value, "false") ||
+ str_equal (value, "0")) {
+ debug = false;
+ } else {
+ pam_syslog (pamh, LOG_DEBUG, "invalid debug value '%s', disabling", value);
+ }
} else if (str_has_prefix (argv[i], MAX_TRIES_MATCH) && strlen(argv[i]) == strlen (MAX_TRIES_MATCH) + 1) {
max_tries = atoi (argv[i] + strlen (MAX_TRIES_MATCH));
if (max_tries < 1)