/* See what user we ended up as */
if (pam_get_item (pam_handle, PAM_USER, (const void **) &new_username) != PAM_SUCCESS)
+ {
+ pam_end (pam_handle, 0);
return EXIT_FAILURE;
+ }
g_free (username);
username = g_strdup (new_username);
if (!username)
{
g_printerr ("No user selected during authentication\n");
+ pam_end (pam_handle, 0);
return EXIT_FAILURE;
}
/* Stop if we didn't authenticated */
if (authentication_result != PAM_SUCCESS)
+ {
+ pam_end (pam_handle, 0);
return EXIT_FAILURE;
+ }
/* Get the command to run (blocks) */
log_filename = read_string ();
if (result != PAM_SUCCESS)
{
g_printerr ("Failed to establish PAM credentials: %s\n", pam_strerror (pam_handle, result));
+ pam_end (pam_handle, 0);
return EXIT_FAILURE;
}
if (result != PAM_SUCCESS)
{
g_printerr ("Failed to open PAM session: %s\n", pam_strerror (pam_handle, result));
+ pam_end (pam_handle, 0);
return EXIT_FAILURE;
}
if (error)
g_printerr ("Unable to contact system bus: %s", error->message);
if (!bus)
+ {
+ pam_end (pam_handle, 0);
return EXIT_FAILURE;
+ }
if (login1_is_running ())
{
g_printerr ("Error writing X authority: %s\n", error->message);
g_clear_error (&error);
if (!result)
+ {
+ pam_end (pam_handle, 0);
return EXIT_FAILURE;
+ }
value = g_strdup_printf ("XAUTHORITY=%s", x_authority_filename);
pam_putenv (pam_handle, value);