=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/auth2.c,v retrieving revision 1.96.2.2 retrieving revision 1.97 diff -u -r1.96.2.2 -r1.97 --- src/usr.bin/ssh/auth2.c 2004/03/04 18:18:15 1.96.2.2 +++ src/usr.bin/ssh/auth2.c 2003/04/08 20:21:28 1.97 @@ -23,7 +23,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: auth2.c,v 1.96.2.2 2004/03/04 18:18:15 brad Exp $"); +RCSID("$OpenBSD: auth2.c,v 1.97 2003/04/08 20:21:28 itojun Exp $"); #include "ssh2.h" #include "xmalloc.h" @@ -36,15 +36,13 @@ #include "pathnames.h" #include "monitor_wrap.h" -#ifdef GSSAPI -#include "ssh-gss.h" -#endif - /* import */ extern ServerOptions options; extern u_char *session_id2; -extern u_int session_id2_len; +extern int session_id2_len; +Authctxt *x_authctxt = NULL; + /* methods */ extern Authmethod method_none; @@ -52,16 +50,10 @@ extern Authmethod method_passwd; extern Authmethod method_kbdint; extern Authmethod method_hostbased; -#ifdef GSSAPI -extern Authmethod method_gssapi; -#endif Authmethod *authmethods[] = { &method_none, &method_pubkey, -#ifdef GSSAPI - &method_gssapi, -#endif &method_passwd, &method_kbdint, &method_hostbased, @@ -77,14 +69,19 @@ static Authmethod *authmethod_lookup(const char *); static char *authmethods_get(void); int user_key_allowed(struct passwd *, Key *); +int hostbased_key_allowed(struct passwd *, const char *, char *, Key *); /* * loop until authctxt->success == TRUE */ -void -do_authentication2(Authctxt *authctxt) +Authctxt * +do_authentication2(void) { + Authctxt *authctxt = authctxt_new(); + + x_authctxt = authctxt; /*XXX*/ + /* challenge-response is implemented via keyboard interactive */ if (options.challenge_response_authentication) options.kbd_interactive_authentication = 1; @@ -92,6 +89,8 @@ dispatch_init(&dispatch_protocol_error); dispatch_set(SSH2_MSG_SERVICE_REQUEST, &input_service_request); dispatch_run(DISPATCH_BLOCK, &authctxt->success, authctxt); + + return (authctxt); } static void @@ -155,7 +154,6 @@ debug2("input_userauth_request: setting up authctxt for %s", user); } else { logit("input_userauth_request: illegal user %s", user); - authctxt->pw = fakepw(); } setproctitle("%s%s", authctxt->pw ? user : "unknown", use_privsep ? " [net]" : ""); @@ -172,12 +170,6 @@ } /* reset state */ auth2_challenge_stop(authctxt); - -#ifdef GSSAPI - dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_TOKEN, NULL); - dispatch_set(SSH2_MSG_USERAUTH_GSSAPI_EXCHANGE_COMPLETE, NULL); -#endif - authctxt->postponed = 0; /* try to authenticate user */ @@ -233,6 +225,14 @@ packet_write_wait(); xfree(methods); } +} + +/* get current user */ + +struct passwd* +auth_get_user(void) +{ + return (x_authctxt != NULL && x_authctxt->valid) ? x_authctxt->pw : NULL; } #define DELIM ","