summaryrefslogtreecommitdiff
path: root/tests/src/libsystem.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/libsystem.c')
-rw-r--r--tests/src/libsystem.c41
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);