123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*
- * pam_debug module
- *
- * Written by Andrew Morgan <morgan@kernel.org> 2001/02/04
- *
- * This module is intended as a debugging aide for determining how
- * the PAM stack is operating.
- */
- #include "config.h"
- #include <stdio.h>
- #include <security/pam_modules.h>
- #include <security/_pam_macros.h>
- #include <security/pam_ext.h>
- #define _PAM_ACTION_UNDEF (-10)
- #include "../../libpam/pam_tokens.h"
- #define DEFAULT_USER "nobody"
- /* --- authentication management functions --- */
- static int state(pam_handle_t *pamh, const char *text)
- {
- int retval;
- retval = pam_info (pamh, "%s", text);
- if (retval != PAM_SUCCESS) {
- D(("pam_info failed"));
- }
- return retval;
- }
- static int parse_args(int retval, const char *event,
- pam_handle_t *pamh, int argc, const char **argv)
- {
- int i;
- for (i=0; i<argc; ++i) {
- int length = strlen(event);
- if (!strncmp(event, argv[i], length) && (argv[i][length] == '=')) {
- int j;
- const char *return_string = argv[i] + (length+1);
- for (j=0; j<_PAM_RETURN_VALUES; ++j) {
- if (!strcmp(return_string, _pam_token_returns[j])) {
- retval = j;
- state(pamh, argv[i]);
- break;
- }
- }
- break;
- }
- }
- return retval;
- }
- int pam_sm_authenticate(pam_handle_t *pamh, int flags UNUSED,
- int argc, const char **argv)
- {
- return parse_args(PAM_SUCCESS, "auth", pamh, argc, argv);
- }
- int pam_sm_setcred(pam_handle_t *pamh, int flags UNUSED,
- int argc, const char **argv)
- {
- return parse_args(PAM_SUCCESS, "cred", pamh, argc, argv);
- }
- /* --- account management functions --- */
- int pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED,
- int argc, const char **argv)
- {
- return parse_args(PAM_SUCCESS, "acct", pamh, argc, argv);
- }
- /* --- password management --- */
- int pam_sm_chauthtok(pam_handle_t *pamh, int flags UNUSED,
- int argc, const char **argv)
- {
- if (flags & PAM_PRELIM_CHECK) {
- return parse_args(PAM_SUCCESS, "prechauthtok", pamh, argc, argv);
- } else {
- return parse_args(PAM_SUCCESS, "chauthtok", pamh, argc, argv);
- }
- }
- /* --- session management --- */
- int pam_sm_open_session(pam_handle_t *pamh, int flags UNUSED,
- int argc, const char **argv)
- {
- return parse_args(PAM_SUCCESS, "open_session", pamh, argc, argv);
- }
- int pam_sm_close_session(pam_handle_t *pamh, int flags UNUSED,
- int argc, const char **argv)
- {
- return parse_args(PAM_SUCCESS, "close_session", pamh, argc, argv);
- }
- /* end of module definition */
|