16 #include <sys/resource.h>
20 extern ServerOptions options;
21 extern int saved_argc;
22 extern char **saved_argv;
27 auth_sia_password(Authctxt *authctxt, char *pass)
30 SIAENTITY *ent = NULL;
32 char *user = authctxt->user;
34 host = get_canonical_hostname(options.verify_reverse_mapping);
36 if (!user || !pass || pass[0] == '\0')
39 if (sia_ses_init(&ent, saved_argc, saved_argv, host, user, NULL, 0,
43 if ((ret = sia_ses_authent(NULL, pass, ent)) != SIASUCCESS) {
44 error("couldn't authenticate %s from %s", user, host);
46 sia_ses_release(&ent);
50 sia_ses_release(&ent);
56 session_setup_sia(char *user, char *tty)
60 SIAENTITY *ent = NULL;
63 host = get_canonical_hostname (options.verify_reverse_mapping);
65 if (sia_ses_init(&ent, saved_argc, saved_argv, host, user, tty, 0,
66 NULL) != SIASUCCESS) {
67 error("sia_ses_init failed");
71 if ((pw = getpwnam(user)) == NULL) {
72 sia_ses_release(&ent);
73 error("getpwnam(%s) failed: %s", user, strerror(errno));
76 if (sia_make_entity_pwd(pw, ent) != SIASUCCESS) {
77 sia_ses_release(&ent);
78 error("sia_make_entity_pwd failed");
82 ent->authtype = SIA_A_NONE;
83 if (sia_ses_estab(sia_collect_trm, ent) != SIASUCCESS) {
84 error("couldn't establish session for %s from %s", user,
89 if (setpriority(PRIO_PROCESS, 0, 0) == -1) {
90 sia_ses_release(&ent);
91 error("setpriority failed: %s", strerror (errno));
95 if (sia_ses_launch(sia_collect_trm, ent) != SIASUCCESS) {
96 error("couldn't launch session for %s from %s", user, host);
100 sia_ses_release(&ent);
102 if (setreuid(geteuid(), geteuid()) < 0) {
103 error("setreuid failed: %s", strerror (errno));
108 #endif /* HAVE_OSF_SIA */