*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
+#ifdef PASSWD_HELPER_PROGRAM
+extern Bool ext_priv_init (int argc, char **argv, Bool verbose_p);
+extern Bool ext_passwd_valid_p (const char *typed_passwd, Bool verbose_p);
+#endif
extern Bool pwent_lock_init (int argc, char **argv, Bool verbose_p);
extern Bool pwent_priv_init (int argc, char **argv, Bool verbose_p);
extern Bool pwent_passwd_valid_p (const char *typed_passwd, Bool verbose_p);
extern Bool pwent_lock_init (int argc, char **argv, Bool verbose_p);
extern Bool pwent_priv_init (int argc, char **argv, Bool verbose_p);
extern Bool pwent_passwd_valid_p (const char *typed_passwd, Bool verbose_p);
- { "PAM", pam_lock_init, 0, pam_passwd_valid_p,
+ { "PAM", 0, pam_priv_init, pam_passwd_valid_p,
{ "normal", pwent_lock_init, pwent_priv_init, pwent_passwd_valid_p,
False, False }
};
{ "normal", pwent_lock_init, pwent_priv_init, pwent_passwd_valid_p,
False, False }
};
- methods[i].initted_p = methods[i].init (argc, argv, verbose_p);
+ if (!methods[i].init)
+ methods[i].initted_p = True;
+ else
+ methods[i].initted_p = methods[i].init (argc, argv, verbose_p);
+
- if (methods[i].initted_p &&
- methods[i].valid_p (typed_passwd, verbose_p))
+ int ok_p = (methods[i].initted_p &&
+ methods[i].valid_p (typed_passwd, verbose_p));
+
+ check_for_leaks (methods[i].name);
+
+ if (ok_p)
{
/* If we successfully authenticated by method N, but attempting
to authenticate by method N-1 failed, mention that (since if
an earlier authentication method fails and a later one succeeds,
something screwy is probably going on.)
*/
{
/* If we successfully authenticated by method N, but attempting
to authenticate by method N-1 failed, mention that (since if
an earlier authentication method fails and a later one succeeds,
something screwy is probably going on.)
*/
"%s: authentication via %s passwords failed.\n",
blurb(), methods[j].name);
fprintf (stderr,
"%s: authentication via %s passwords failed.\n",
blurb(), methods[j].name);
fprintf (stderr,