sshd: pass struct ssh to auth functions; ok djm@
authormarkus <markus@openbsd.org>
Tue, 30 May 2017 14:18:15 +0000 (14:18 +0000)
committermarkus <markus@openbsd.org>
Tue, 30 May 2017 14:18:15 +0000 (14:18 +0000)
usr.bin/ssh/auth2-chall.c
usr.bin/ssh/auth2-gss.c
usr.bin/ssh/auth2.c
usr.bin/ssh/packet.h

index 94beb26..ef3369f 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth2-chall.c,v 1.45 2017/05/30 08:49:58 markus Exp $ */
+/* $OpenBSD: auth2-chall.c,v 1.46 2017/05/30 14:18:15 markus Exp $ */
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
  * Copyright (c) 2001 Per Allansson.  All rights reserved.
@@ -241,7 +241,8 @@ send_userauth_info_request(Authctxt *authctxt)
 static int
 input_userauth_info_response(int type, u_int32_t seq, void *ctxt)
 {
-       Authctxt *authctxt = ctxt;
+       struct ssh *ssh = ctxt;
+       Authctxt *authctxt = ssh->authctxt;
        KbdintAuthctxt *kbdintctxt;
        int authenticated = 0, res;
        u_int i, nresp;
index d003551..3a95839 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth2-gss.c,v 1.22 2015/01/19 20:07:45 markus Exp $ */
+/* $OpenBSD: auth2-gss.c,v 1.23 2017/05/30 14:18:15 markus Exp $ */
 
 /*
  * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
@@ -124,7 +124,8 @@ userauth_gssapi(Authctxt *authctxt)
 static int
 input_gssapi_token(int type, u_int32_t plen, void *ctxt)
 {
-       Authctxt *authctxt = ctxt;
+       struct ssh *ssh = ctxt;
+       Authctxt *authctxt = ssh->authctxt;
        Gssctxt *gssctxt;
        gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
        gss_buffer_desc recv_tok;
@@ -179,7 +180,8 @@ input_gssapi_token(int type, u_int32_t plen, void *ctxt)
 static int
 input_gssapi_errtok(int type, u_int32_t plen, void *ctxt)
 {
-       Authctxt *authctxt = ctxt;
+       struct ssh *ssh = ctxt;
+       Authctxt *authctxt = ssh->authctxt;
        Gssctxt *gssctxt;
        gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
        gss_buffer_desc recv_tok;
@@ -220,7 +222,8 @@ input_gssapi_errtok(int type, u_int32_t plen, void *ctxt)
 static int
 input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt)
 {
-       Authctxt *authctxt = ctxt;
+       struct ssh *ssh = ctxt;
+       Authctxt *authctxt = ssh->authctxt;
        int authenticated;
 
        if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep))
@@ -247,7 +250,8 @@ input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt)
 static int
 input_gssapi_mic(int type, u_int32_t plen, void *ctxt)
 {
-       Authctxt *authctxt = ctxt;
+       struct ssh *ssh = ctxt;
+       Authctxt *authctxt = ssh->authctxt;
        Gssctxt *gssctxt;
        int authenticated = 0;
        Buffer b;
index e163c8e..f019f7d 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth2.c,v 1.137 2017/02/03 23:05:57 djm Exp $ */
+/* $OpenBSD: auth2.c,v 1.138 2017/05/30 14:18:15 markus Exp $ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
  *
@@ -155,16 +155,20 @@ done:
 void
 do_authentication2(Authctxt *authctxt)
 {
+       struct ssh *ssh = active_state;         /* XXX */
+       ssh->authctxt = authctxt;               /* XXX move to caller */
        dispatch_init(&dispatch_protocol_error);
        dispatch_set(SSH2_MSG_SERVICE_REQUEST, &input_service_request);
-       dispatch_run(DISPATCH_BLOCK, &authctxt->success, authctxt);
+       dispatch_run(DISPATCH_BLOCK, &authctxt->success, ssh);
+       ssh->authctxt = NULL;
 }
 
 /*ARGSUSED*/
 static int
 input_service_request(int type, u_int32_t seq, void *ctxt)
 {
-       Authctxt *authctxt = ctxt;
+       struct ssh *ssh = ctxt;
+       Authctxt *authctxt = ssh->authctxt;
        u_int len;
        int acceptit = 0;
        char *service = packet_get_cstring(&len);
@@ -199,8 +203,8 @@ input_service_request(int type, u_int32_t seq, void *ctxt)
 static int
 input_userauth_request(int type, u_int32_t seq, void *ctxt)
 {
-       struct ssh *ssh = active_state; /* XXX */
-       Authctxt *authctxt = ctxt;
+       struct ssh *ssh = ctxt;
+       Authctxt *authctxt = ssh->authctxt;
        Authmethod *m = NULL;
        char *user, *service, *method, *style = NULL;
        int authenticated = 0;
index d46424c..978b3a3 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: packet.h,v 1.79 2017/05/03 21:08:09 naddy Exp $ */
+/* $OpenBSD: packet.h,v 1.80 2017/05/30 14:18:15 markus Exp $ */
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -63,6 +63,9 @@ struct ssh {
        TAILQ_HEAD(, key_entry) private_keys;
        TAILQ_HEAD(, key_entry) public_keys;
 
+       /* Client/Server authentication context */
+       void *authctxt;
+
        /* APP data */
        void *app_data;
 };