summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--auth2-chall.c5
-rw-r--r--auth2-gss.c14
-rw-r--r--auth2.c14
-rw-r--r--packet.h5
4 files changed, 25 insertions, 13 deletions
diff --git a/auth2-chall.c b/auth2-chall.c
index 4be421287..80f212287 100644
--- a/auth2-chall.c
+++ b/auth2-chall.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-chall.c,v 1.45 2017/05/30 08:49:58 markus Exp $ */ 1/* $OpenBSD: auth2-chall.c,v 1.46 2017/05/30 14:18:15 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2001 Markus Friedl. All rights reserved. 3 * Copyright (c) 2001 Markus Friedl. All rights reserved.
4 * Copyright (c) 2001 Per Allansson. All rights reserved. 4 * Copyright (c) 2001 Per Allansson. All rights reserved.
@@ -287,7 +287,8 @@ send_userauth_info_request(Authctxt *authctxt)
287static int 287static int
288input_userauth_info_response(int type, u_int32_t seq, void *ctxt) 288input_userauth_info_response(int type, u_int32_t seq, void *ctxt)
289{ 289{
290 Authctxt *authctxt = ctxt; 290 struct ssh *ssh = ctxt;
291 Authctxt *authctxt = ssh->authctxt;
291 KbdintAuthctxt *kbdintctxt; 292 KbdintAuthctxt *kbdintctxt;
292 int authenticated = 0, res; 293 int authenticated = 0, res;
293 u_int i, nresp; 294 u_int i, nresp;
diff --git a/auth2-gss.c b/auth2-gss.c
index 1ca835773..5bfcb9b46 100644
--- a/auth2-gss.c
+++ b/auth2-gss.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2-gss.c,v 1.22 2015/01/19 20:07:45 markus Exp $ */ 1/* $OpenBSD: auth2-gss.c,v 1.23 2017/05/30 14:18:15 markus Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. 4 * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
@@ -129,7 +129,8 @@ userauth_gssapi(Authctxt *authctxt)
129static int 129static int
130input_gssapi_token(int type, u_int32_t plen, void *ctxt) 130input_gssapi_token(int type, u_int32_t plen, void *ctxt)
131{ 131{
132 Authctxt *authctxt = ctxt; 132 struct ssh *ssh = ctxt;
133 Authctxt *authctxt = ssh->authctxt;
133 Gssctxt *gssctxt; 134 Gssctxt *gssctxt;
134 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; 135 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
135 gss_buffer_desc recv_tok; 136 gss_buffer_desc recv_tok;
@@ -184,7 +185,8 @@ input_gssapi_token(int type, u_int32_t plen, void *ctxt)
184static int 185static int
185input_gssapi_errtok(int type, u_int32_t plen, void *ctxt) 186input_gssapi_errtok(int type, u_int32_t plen, void *ctxt)
186{ 187{
187 Authctxt *authctxt = ctxt; 188 struct ssh *ssh = ctxt;
189 Authctxt *authctxt = ssh->authctxt;
188 Gssctxt *gssctxt; 190 Gssctxt *gssctxt;
189 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; 191 gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
190 gss_buffer_desc recv_tok; 192 gss_buffer_desc recv_tok;
@@ -225,7 +227,8 @@ input_gssapi_errtok(int type, u_int32_t plen, void *ctxt)
225static int 227static int
226input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt) 228input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt)
227{ 229{
228 Authctxt *authctxt = ctxt; 230 struct ssh *ssh = ctxt;
231 Authctxt *authctxt = ssh->authctxt;
229 int authenticated; 232 int authenticated;
230 233
231 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep)) 234 if (authctxt == NULL || (authctxt->methoddata == NULL && !use_privsep))
@@ -252,7 +255,8 @@ input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt)
252static int 255static int
253input_gssapi_mic(int type, u_int32_t plen, void *ctxt) 256input_gssapi_mic(int type, u_int32_t plen, void *ctxt)
254{ 257{
255 Authctxt *authctxt = ctxt; 258 struct ssh *ssh = ctxt;
259 Authctxt *authctxt = ssh->authctxt;
256 Gssctxt *gssctxt; 260 Gssctxt *gssctxt;
257 int authenticated = 0; 261 int authenticated = 0;
258 Buffer b; 262 Buffer b;
diff --git a/auth2.c b/auth2.c
index 97dd2ef0a..13ff95eac 100644
--- a/auth2.c
+++ b/auth2.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: auth2.c,v 1.137 2017/02/03 23:05:57 djm Exp $ */ 1/* $OpenBSD: auth2.c,v 1.138 2017/05/30 14:18:15 markus Exp $ */
2/* 2/*
3 * Copyright (c) 2000 Markus Friedl. All rights reserved. 3 * Copyright (c) 2000 Markus Friedl. All rights reserved.
4 * 4 *
@@ -168,16 +168,20 @@ done:
168void 168void
169do_authentication2(Authctxt *authctxt) 169do_authentication2(Authctxt *authctxt)
170{ 170{
171 struct ssh *ssh = active_state; /* XXX */
172 ssh->authctxt = authctxt; /* XXX move to caller */
171 dispatch_init(&dispatch_protocol_error); 173 dispatch_init(&dispatch_protocol_error);
172 dispatch_set(SSH2_MSG_SERVICE_REQUEST, &input_service_request); 174 dispatch_set(SSH2_MSG_SERVICE_REQUEST, &input_service_request);
173 dispatch_run(DISPATCH_BLOCK, &authctxt->success, authctxt); 175 dispatch_run(DISPATCH_BLOCK, &authctxt->success, ssh);
176 ssh->authctxt = NULL;
174} 177}
175 178
176/*ARGSUSED*/ 179/*ARGSUSED*/
177static int 180static int
178input_service_request(int type, u_int32_t seq, void *ctxt) 181input_service_request(int type, u_int32_t seq, void *ctxt)
179{ 182{
180 Authctxt *authctxt = ctxt; 183 struct ssh *ssh = ctxt;
184 Authctxt *authctxt = ssh->authctxt;
181 u_int len; 185 u_int len;
182 int acceptit = 0; 186 int acceptit = 0;
183 char *service = packet_get_cstring(&len); 187 char *service = packet_get_cstring(&len);
@@ -212,8 +216,8 @@ input_service_request(int type, u_int32_t seq, void *ctxt)
212static int 216static int
213input_userauth_request(int type, u_int32_t seq, void *ctxt) 217input_userauth_request(int type, u_int32_t seq, void *ctxt)
214{ 218{
215 struct ssh *ssh = active_state; /* XXX */ 219 struct ssh *ssh = ctxt;
216 Authctxt *authctxt = ctxt; 220 Authctxt *authctxt = ssh->authctxt;
217 Authmethod *m = NULL; 221 Authmethod *m = NULL;
218 char *user, *service, *method, *style = NULL; 222 char *user, *service, *method, *style = NULL;
219 int authenticated = 0; 223 int authenticated = 0;
diff --git a/packet.h b/packet.h
index b82f45a75..2b8069cd6 100644
--- a/packet.h
+++ b/packet.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: packet.h,v 1.79 2017/05/03 21:08:09 naddy Exp $ */ 1/* $OpenBSD: packet.h,v 1.80 2017/05/30 14:18:15 markus Exp $ */
2 2
3/* 3/*
4 * Author: Tatu Ylonen <ylo@cs.hut.fi> 4 * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -77,6 +77,9 @@ struct ssh {
77 TAILQ_HEAD(, key_entry) private_keys; 77 TAILQ_HEAD(, key_entry) private_keys;
78 TAILQ_HEAD(, key_entry) public_keys; 78 TAILQ_HEAD(, key_entry) public_keys;
79 79
80 /* Client/Server authentication context */
81 void *authctxt;
82
80 /* APP data */ 83 /* APP data */
81 void *app_data; 84 void *app_data;
82}; 85};