Lines Matching refs:hPAM

67 RTDECL(int) pam_sm_authenticate(pam_handle_t *hPAM, int iFlags, int argc, const char **argv);
68 RTDECL(int) pam_sm_setcred(pam_handle_t *hPAM, int iFlags, int argc, const char **argv);
69 RTDECL(int) pam_sm_acct_mgmt(pam_handle_t *hPAM, int iFlags, int argc, const char **argv);
70 RTDECL(int) pam_sm_open_session(pam_handle_t *hPAM, int iFlags, int argc, const char **argv);
71 RTDECL(int) pam_sm_close_session(pam_handle_t *hPAM, int iFlags, int argc, const char **argv);
72 RTDECL(int) pam_sm_chauthtok(pam_handle_t *hPAM, int iFlags, int argc, const char **argv);
89 pam_handle_t *hPAM;
119 static void pam_vbox_error(pam_handle_t *hPAM, const char *pszFormat, ...)
140 static void pam_vbox_log(pam_handle_t *hPAM, const char *pszFormat, ...)
165 * @param hPAM PAM handle.
170 static int vbox_set_msg(pam_handle_t *hPAM, int iStyle, const char *pszText)
172 AssertPtrReturn(hPAM, VERR_INVALID_POINTER);
190 int pamrc = pam_get_item(hPAM, PAM_CONV, (void **)&conv);
193 int pamrc = pam_get_item(hPAM, PAM_CONV, (const void **)&conv);
204 pam_vbox_log(hPAM, "Showing message \"%s\" (type %d)", pszText, iStyle);
211 pam_vbox_log(hPAM, "Response to message \"%s\" was \"%s\"",
229 * @param hPAM PAM handle.
231 static int pam_vbox_init(pam_handle_t *hPAM)
234 g_pam_handle = hPAM; /* hack for getting assertion text */
242 pam_vbox_log(hPAM, "pam_vbox: %sr%s, running on %s\n",
248 pam_vbox_error(hPAM, "pam_vbox_init: could not init runtime! rc=%Rrc. Aborting\n", rc);
252 pam_vbox_log(hPAM, "pam_vbox_init: runtime initialized\n");
261 pam_vbox_error(hPAM, "pam_vbox_init: access is denied to guest driver! Please make sure you run with sufficient rights. Aborting\n");
265 pam_vbox_error(hPAM, "pam_vbox_init: guest driver not found! Guest Additions installed? Aborting\n");
269 pam_vbox_error(hPAM, "pam_vbox_init: could not init VbglR3 library! rc=%Rrc. Aborting\n", rc);
273 pam_vbox_log(hPAM, "pam_vbox_init: guest lib initialized\n");
282 pam_get_item(hPAM, PAM_RHOST, (void**) &rhost);
283 pam_get_item(hPAM, PAM_TTY, (void**) &tty);
284 pam_get_item(hPAM, PAM_USER_PROMPT, (void**) &prompt);
286 pam_get_item(hPAM, PAM_RHOST, (const void**) &rhost);
287 pam_get_item(hPAM, PAM_TTY, (const void**) &tty);
288 pam_get_item(hPAM, PAM_USER_PROMPT, (const void**) &prompt);
290 pam_vbox_log(hPAM, "pam_vbox_init: rhost=%s, tty=%s, prompt=%s\n",
302 * @param hPAM PAM handle.
304 static void pam_vbox_shutdown(pam_handle_t *hPAM)
315 * @param hPAM PAM handle.
317 static int pam_vbox_check_creds(pam_handle_t *hPAM)
323 pam_vbox_error(hPAM, "pam_vbox_check_creds: could not query for credentials! rc=%Rrc. Aborting\n", rc);
326 pam_vbox_log(hPAM, "pam_vbox_check_creds: no credentials available\n");
338 pam_vbox_error(hPAM, "pam_vbox_check_creds: could not retrieve credentials! rc=%Rrc. Aborting\n", rc);
343 pam_vbox_log(hPAM, "pam_vbox_check_creds: credentials retrieved: user=%s, password=%s, domain=%s\n",
347 pam_vbox_log(hPAM, "pam_vbox_check_creds: credentials retrieved: user=%s, password=XXX, domain=%s\n",
351 int pamrc = pam_set_item(hPAM, PAM_USER, pszUsername);
354 pam_vbox_error(hPAM, "pam_vbox_check_creds: could not set user name! pamrc=%d, msg=%s. Aborting\n",
355 pamrc, pam_strerror(hPAM, pamrc));
359 pamrc = pam_set_item(hPAM, PAM_AUTHTOK, pszPassword);
361 pam_vbox_error(hPAM, "pam_vbox_check_creds: could not set password! pamrc=%d, msg=%s. Aborting\n",
362 pamrc, pam_strerror(hPAM, pamrc));
368 pam_vbox_log(hPAM, "pam_vbox_check_creds: returned with pamrc=%d, msg=%s\n",
369 pamrc, pam_strerror(hPAM, pamrc));
374 pam_vbox_log(hPAM, "pam_vbox_check_creds: returned with rc=%Rrc\n", rc);
385 * @param hPAM PAM handle.
394 static int pam_vbox_read_prop(pam_handle_t *hPAM, uint32_t uClientID,
398 AssertPtrReturn(hPAM, VERR_INVALID_POINTER);
457 pam_vbox_error(hPAM, "pam_vbox_read_prop: key \"%s\" should be read-only on guest but it is not\n",
464 pam_vbox_error(hPAM, "pam_vbox_read_prop: key \"%s\" contains no/wrong flags (%s)\n",
474 pam_vbox_error(hPAM, "pam_vbox_read_prop: could not store value of key \"%s\"\n",
480 pam_vbox_log(hPAM, "pam_vbox_read_prop: read key \"%s\"=\"%s\"\n",
485 pam_vbox_log(hPAM, "pam_vbox_read_prop: read key \"%s\" with rc=%Rrc\n",
495 * @param hPAM PAM handle.
501 static int pam_vbox_wait_prop(pam_handle_t *hPAM, uint32_t uClientID,
504 AssertPtrReturn(hPAM, VERR_INVALID_POINTER);
571 pam_vbox_error(pUserData->hPAM, "pam_vbox_wait_thread: Unable to connect to guest property service, rc=%Rrc\n", rc);
575 pam_vbox_log(pUserData->hPAM, "pam_vbox_wait_thread: clientID=%u\n", uClientID);
582 rc = pam_vbox_wait_prop(pUserData->hPAM, uClientID,
592 pam_vbox_error(pUserData->hPAM, "pam_vbox_wait_thread: The abort notification request timed out or was interrupted\n");
600 pam_vbox_error(pUserData->hPAM, "pam_vbox_wait_thread: Temporarily unable to get abort notification\n");
604 pam_vbox_error(pUserData->hPAM, "pam_vbox_wait_thread: The abort notification request failed with rc=%Rrc\n", rc);
610 pam_vbox_log(pUserData->hPAM, "pam_vbox_wait_thread: Got notification to abort waiting\n");
619 rc = pam_vbox_check_creds(pUserData->hPAM);
644 pam_vbox_log(pUserData->hPAM, "pam_vbox_wait_thread: Waiting thread has reached timeout (%dms), exiting ...\n",
661 pam_vbox_log(pUserData->hPAM, "pam_vbox_wait_thread: Waiting thread returned with rc=%Rrc\n", rc);
670 * @param hPAM PAM handle.
676 static int pam_vbox_wait_for_creds(pam_handle_t *hPAM, uint32_t uClientID, uint32_t uTimeoutMS)
679 threadData.hPAM = hPAM;
688 pam_vbox_log(hPAM, "pam_vbox_wait_for_creds: Waiting for credentials (%dms) ...\n", uTimeoutMS);
696 pam_vbox_error(hPAM, "pam_vbox_wait_for_creds: Creating thread failed with rc=%Rrc\n", rc);
698 pam_vbox_log(hPAM, "pam_vbox_wait_for_creds: Waiting for credentials returned with rc=%Rrc\n", rc);
703 DECLEXPORT(int) pam_sm_authenticate(pam_handle_t *hPAM, int iFlags,
712 pam_vbox_error(hPAM, "pam_vbox_authenticate: unknown command line argument \"%s\"\n", argv[i]);
714 pam_vbox_log(hPAM, "pam_vbox_authenticate called\n");
716 int rc = pam_vbox_init(hPAM);
728 rc = pam_vbox_read_prop(hPAM, uClientId,
737 int rc2 = pam_vbox_read_prop(hPAM, uClientId,
746 pam_vbox_error(hPAM, "pam_vbox_authenticate: invalid waiting timeout value specified, defaulting to infinite timeout\n");
753 rc2 = pam_vbox_read_prop(hPAM, uClientId,
761 rc2 = vbox_set_msg(hPAM, 0 /* Info message */,
764 pam_vbox_error(hPAM, "pam_vbox_authenticate: error setting waiting information message, rc=%Rrc\n", rc2);
770 rc = pam_vbox_check_creds(hPAM);
773 rc = pam_vbox_wait_for_creds(hPAM, uClientId, uTimeoutMS);
776 pam_vbox_log(hPAM, "pam_vbox_authenticate: no credentials given within time\n");
778 rc2 = pam_vbox_read_prop(hPAM, uClientId,
784 rc2 = vbox_set_msg(hPAM, 0 /* Info message */, szVal);
790 pam_vbox_log(hPAM, "pam_vbox_authenticate: waiting aborted\n");
792 rc2 = pam_vbox_read_prop(hPAM, uClientId,
798 rc2 = vbox_set_msg(hPAM, 0 /* Info message */, szVal);
815 pam_vbox_log(hPAM, "pam_vbox_authenticate: falling back to old method\n");
819 int rc2 = pam_vbox_check_creds(hPAM);
824 pam_vbox_shutdown(hPAM);
826 pam_vbox_log(hPAM, "pam_vbox_authenticate: overall result rc=%Rrc\n", rc);
838 DECLEXPORT(int) pam_sm_setcred(pam_handle_t *hPAM, int iFlags, int argc, const char **argv)
840 pam_vbox_log(hPAM, "pam_vbox_setcred called, iFlags=0x%x\n", iFlags);
842 pam_vbox_log(hPAM, "pam_vbox_setcred: argv[%d] = %s\n", i, argv[i]);
847 DECLEXPORT(int) pam_sm_acct_mgmt(pam_handle_t *hPAM, int iFlags, int argc, const char **argv)
849 pam_vbox_log(hPAM, "pam_vbox_acct_mgmt called\n");
854 DECLEXPORT(int) pam_sm_open_session(pam_handle_t *hPAM, int iFlags, int argc, const char **argv)
856 pam_vbox_log(hPAM, "pam_vbox_open_session called\n");
862 DECLEXPORT(int) pam_sm_close_session(pam_handle_t *hPAM, int iFlags, int argc, const char **argv)
864 pam_vbox_log(hPAM, "pam_vbox_close_session called\n");
869 DECLEXPORT(int) pam_sm_chauthtok(pam_handle_t *hPAM, int iFlags, int argc, const char **argv)
871 pam_vbox_log(hPAM, "pam_vbox_sm_chauthtok called\n");