diff options
Diffstat (limited to 'tests/src/libsystem.c')
-rw-r--r-- | tests/src/libsystem.c | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/tests/src/libsystem.c b/tests/src/libsystem.c index 13abda8c..9a8b6de7 100644 --- a/tests/src/libsystem.c +++ b/tests/src/libsystem.c @@ -445,6 +445,27 @@ pam_start (const char *service_name, const char *user, const struct pam_conv *co return PAM_SUCCESS; } +static void +send_info (pam_handle_t *pamh, const char *message) +{ + struct pam_message **msg; + struct pam_response *resp = NULL; + + msg = calloc (1, sizeof (struct pam_message *)); + msg[0] = malloc (sizeof (struct pam_message)); + msg[0]->msg_style = PAM_TEXT_INFO; + msg[0]->msg = message; + pamh->conversation.conv (1, (const struct pam_message **) msg, &resp, pamh->conversation.appdata_ptr); + free (msg[0]); + free (msg); + if (resp) + { + if (resp[0].resp) + free (resp[0].resp); + free (resp); + } +} + int pam_authenticate (pam_handle_t *pamh, int flags) { @@ -484,6 +505,9 @@ pam_authenticate (pam_handle_t *pamh, int flags) free (resp); } + if (strcmp (pamh->user, "log-pam") == 0) + send_info (pamh, "pam_authenticate"); + /* Crash on authenticate */ if (strcmp (pamh->user, "crash-authenticate") == 0) kill (getpid (), SIGSEGV); @@ -731,6 +755,9 @@ pam_open_session (pam_handle_t *pamh, int flags) if (strcmp (pamh->user, "session-error") == 0) return PAM_SESSION_ERR; + if (strcmp (pamh->user, "log-pam") == 0) + send_info (pamh, "pam_open_session"); + if (strcmp (pamh->user, "make-home-dir") == 0) { struct passwd *entry; @@ -747,6 +774,9 @@ pam_close_session (pam_handle_t *pamh, int flags) if (pamh == NULL) return PAM_SYSTEM_ERR; + if (strcmp (pamh->user, "log-pam") == 0) + send_info (pamh, "pam_close_session"); + return PAM_SUCCESS; } @@ -759,6 +789,9 @@ pam_acct_mgmt (pam_handle_t *pamh, int flags) if (!pamh->user) return PAM_USER_UNKNOWN; + if (strcmp (pamh->user, "log-pam") == 0) + send_info (pamh, "pam_acct_mgmt"); + if (strcmp (pamh->user, "denied") == 0) return PAM_PERM_DENIED; if (strcmp (pamh->user, "expired") == 0) @@ -780,6 +813,9 @@ pam_chauthtok (pam_handle_t *pamh, int flags) if (pamh == NULL) return PAM_SYSTEM_ERR; + if (strcmp (pamh->user, "log-pam") == 0) + send_info (pamh, "pam_chauthtok"); + msg = malloc (sizeof (struct pam_message *) * 1); msg[0] = malloc (sizeof (struct pam_message)); msg[0]->msg_style = PAM_PROMPT_ECHO_OFF; @@ -815,6 +851,9 @@ pam_setcred (pam_handle_t *pamh, int flags) if (pamh == NULL) return PAM_SYSTEM_ERR; + if (strcmp (pamh->user, "log-pam") == 0) + send_info (pamh, "pam_setcred"); + /* Put the test directories into the path */ e = g_strdup_printf ("PATH=%s/tests/src/.libs:%s/tests/src:%s/tests/src:%s/src:%s", BUILDDIR, BUILDDIR, SRCDIR, BUILDDIR, pam_getenv (pamh, "PATH")); pam_putenv (pamh, e); @@ -858,7 +897,7 @@ pam_end (pam_handle_t *pamh, int pam_status) { if (pamh == NULL) return PAM_SYSTEM_ERR; - + free (pamh->service_name); if (pamh->user) free (pamh->user); |