protocol handlers all get struct ssh passed; ok djm@
authormarkus <markus@openbsd.org>
Tue, 30 May 2017 14:23:52 +0000 (14:23 +0000)
committermarkus <markus@openbsd.org>
Tue, 30 May 2017 14:23:52 +0000 (14:23 +0000)
18 files changed:
usr.bin/ssh/auth2-chall.c
usr.bin/ssh/auth2-gss.c
usr.bin/ssh/auth2.c
usr.bin/ssh/channels.c
usr.bin/ssh/channels.h
usr.bin/ssh/clientloop.c
usr.bin/ssh/dispatch.c
usr.bin/ssh/dispatch.h
usr.bin/ssh/kex.c
usr.bin/ssh/kex.h
usr.bin/ssh/kexdhc.c
usr.bin/ssh/kexdhs.c
usr.bin/ssh/kexecdhc.c
usr.bin/ssh/kexecdhs.c
usr.bin/ssh/kexgexc.c
usr.bin/ssh/kexgexs.c
usr.bin/ssh/serverloop.c
usr.bin/ssh/sshconnect2.c

index ef3369f..fff13a3 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth2-chall.c,v 1.46 2017/05/30 14:18:15 markus Exp $ */
+/* $OpenBSD: auth2-chall.c,v 1.47 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
  * Copyright (c) 2001 Per Allansson.  All rights reserved.
@@ -41,7 +41,7 @@
 
 static int auth2_challenge_start(Authctxt *);
 static int send_userauth_info_request(Authctxt *);
-static int input_userauth_info_response(int, u_int32_t, void *);
+static int input_userauth_info_response(int, u_int32_t, struct ssh *);
 
 extern KbdintDevice bsdauth_device;
 
@@ -239,9 +239,8 @@ send_userauth_info_request(Authctxt *authctxt)
 }
 
 static int
-input_userauth_info_response(int type, u_int32_t seq, void *ctxt)
+input_userauth_info_response(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        KbdintAuthctxt *kbdintctxt;
        int authenticated = 0, res;
index 3a95839..41493b7 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth2-gss.c,v 1.23 2017/05/30 14:18:15 markus Exp $ */
+/* $OpenBSD: auth2-gss.c,v 1.24 2017/05/30 14:23:52 markus Exp $ */
 
 /*
  * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved.
 
 extern ServerOptions options;
 
-static int input_gssapi_token(int type, u_int32_t plen, void *ctxt);
-static int input_gssapi_mic(int type, u_int32_t plen, void *ctxt);
-static int input_gssapi_exchange_complete(int type, u_int32_t plen, void *ctxt);
-static int input_gssapi_errtok(int, u_int32_t, void *);
+static int input_gssapi_token(int type, u_int32_t plen, struct ssh *ssh);
+static int input_gssapi_mic(int type, u_int32_t plen, struct ssh *ssh);
+static int input_gssapi_exchange_complete(int type, u_int32_t plen, struct ssh *ssh);
+static int input_gssapi_errtok(int, u_int32_t, struct ssh *);
 
 /*
  * We only support those mechanisms that we know about (ie ones that we know
@@ -122,9 +122,8 @@ userauth_gssapi(Authctxt *authctxt)
 }
 
 static int
-input_gssapi_token(int type, u_int32_t plen, void *ctxt)
+input_gssapi_token(int type, u_int32_t plen, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        Gssctxt *gssctxt;
        gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
@@ -178,9 +177,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)
+input_gssapi_errtok(int type, u_int32_t plen, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        Gssctxt *gssctxt;
        gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
@@ -220,9 +218,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)
+input_gssapi_exchange_complete(int type, u_int32_t plen, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        int authenticated;
 
@@ -248,9 +245,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)
+input_gssapi_mic(int type, u_int32_t plen, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        Gssctxt *gssctxt;
        int authenticated = 0;
index f019f7d..d9c194b 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: auth2.c,v 1.138 2017/05/30 14:18:15 markus Exp $ */
+/* $OpenBSD: auth2.c,v 1.139 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
  *
@@ -83,8 +83,8 @@ Authmethod *authmethods[] = {
 
 /* protocol */
 
-static int input_service_request(int, u_int32_t, void *);
-static int input_userauth_request(int, u_int32_t, void *);
+static int input_service_request(int, u_int32_t, struct ssh *);
+static int input_userauth_request(int, u_int32_t, struct ssh *);
 
 /* helper */
 static Authmethod *authmethod_lookup(Authctxt *, const char *);
@@ -165,9 +165,8 @@ do_authentication2(Authctxt *authctxt)
 
 /*ARGSUSED*/
 static int
-input_service_request(int type, u_int32_t seq, void *ctxt)
+input_service_request(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        u_int len;
        int acceptit = 0;
@@ -201,9 +200,8 @@ input_service_request(int type, u_int32_t seq, void *ctxt)
 
 /*ARGSUSED*/
 static int
-input_userauth_request(int type, u_int32_t seq, void *ctxt)
+input_userauth_request(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        Authmethod *m = NULL;
        char *user, *service, *method, *style = NULL;
index 2f43b61..339f6aa 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.c,v 1.362 2017/05/30 08:49:58 markus Exp $ */
+/* $OpenBSD: channels.c,v 1.363 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -2367,9 +2367,8 @@ channel_proxy_downstream(Channel *downstream)
  * replaces local (proxy) channel ID with downstream channel ID.
  */
 int
-channel_proxy_upstream(Channel *c, int type, u_int32_t seq, void *ctxt)
+channel_proxy_upstream(Channel *c, int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = active_state;
        struct sshbuf *b = NULL;
        Channel *downstream;
        const u_char *cp = NULL;
@@ -2449,7 +2448,7 @@ channel_proxy_upstream(Channel *c, int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-channel_input_data(int type, u_int32_t seq, void *ctxt)
+channel_input_data(int type, u_int32_t seq, struct ssh *ssh)
 {
        int id;
        const u_char *data;
@@ -2461,7 +2460,7 @@ channel_input_data(int type, u_int32_t seq, void *ctxt)
        c = channel_lookup(id);
        if (c == NULL)
                packet_disconnect("Received data for nonexistent channel %d.", id);
-       if (channel_proxy_upstream(c, type, seq, ctxt))
+       if (channel_proxy_upstream(c, type, seq, ssh))
                return 0;
 
        /* Ignore any data for non-open channels (might happen on close) */
@@ -2509,7 +2508,7 @@ channel_input_data(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-channel_input_extended_data(int type, u_int32_t seq, void *ctxt)
+channel_input_extended_data(int type, u_int32_t seq, struct ssh *ssh)
 {
        int id;
        char *data;
@@ -2522,7 +2521,7 @@ channel_input_extended_data(int type, u_int32_t seq, void *ctxt)
 
        if (c == NULL)
                packet_disconnect("Received extended_data for bad channel %d.", id);
-       if (channel_proxy_upstream(c, type, seq, ctxt))
+       if (channel_proxy_upstream(c, type, seq, ssh))
                return 0;
        if (c->type != SSH_CHANNEL_OPEN) {
                logit("channel %d: ext data for non open", id);
@@ -2559,7 +2558,7 @@ channel_input_extended_data(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-channel_input_ieof(int type, u_int32_t seq, void *ctxt)
+channel_input_ieof(int type, u_int32_t seq, struct ssh *ssh)
 {
        int id;
        Channel *c;
@@ -2569,7 +2568,7 @@ channel_input_ieof(int type, u_int32_t seq, void *ctxt)
        c = channel_lookup(id);
        if (c == NULL)
                packet_disconnect("Received ieof for nonexistent channel %d.", id);
-       if (channel_proxy_upstream(c, type, seq, ctxt))
+       if (channel_proxy_upstream(c, type, seq, ssh))
                return 0;
        chan_rcvd_ieof(c);
 
@@ -2585,14 +2584,14 @@ channel_input_ieof(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-channel_input_oclose(int type, u_int32_t seq, void *ctxt)
+channel_input_oclose(int type, u_int32_t seq, struct ssh *ssh)
 {
        int id = packet_get_int();
        Channel *c = channel_lookup(id);
 
        if (c == NULL)
                packet_disconnect("Received oclose for nonexistent channel %d.", id);
-       if (channel_proxy_upstream(c, type, seq, ctxt))
+       if (channel_proxy_upstream(c, type, seq, ssh))
                return 0;
        packet_check_eom();
        chan_rcvd_oclose(c);
@@ -2601,7 +2600,7 @@ channel_input_oclose(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-channel_input_open_confirmation(int type, u_int32_t seq, void *ctxt)
+channel_input_open_confirmation(int type, u_int32_t seq, struct ssh *ssh)
 {
        int id, remote_id;
        Channel *c;
@@ -2612,7 +2611,7 @@ channel_input_open_confirmation(int type, u_int32_t seq, void *ctxt)
        if (c==NULL)
                packet_disconnect("Received open confirmation for "
                    "unknown channel %d.", id);
-       if (channel_proxy_upstream(c, type, seq, ctxt))
+       if (channel_proxy_upstream(c, type, seq, ssh))
                return 0;
        if (c->type != SSH_CHANNEL_OPENING)
                packet_disconnect("Received open confirmation for "
@@ -2653,7 +2652,7 @@ reason2txt(int reason)
 
 /* ARGSUSED */
 int
-channel_input_open_failure(int type, u_int32_t seq, void *ctxt)
+channel_input_open_failure(int type, u_int32_t seq, struct ssh *ssh)
 {
        int id, reason;
        char *msg = NULL, *lang = NULL;
@@ -2665,7 +2664,7 @@ channel_input_open_failure(int type, u_int32_t seq, void *ctxt)
        if (c==NULL)
                packet_disconnect("Received open failure for "
                    "unknown channel %d.", id);
-       if (channel_proxy_upstream(c, type, seq, ctxt))
+       if (channel_proxy_upstream(c, type, seq, ssh))
                return 0;
        if (c->type != SSH_CHANNEL_OPENING)
                packet_disconnect("Received open failure for "
@@ -2692,7 +2691,7 @@ channel_input_open_failure(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-channel_input_window_adjust(int type, u_int32_t seq, void *ctxt)
+channel_input_window_adjust(int type, u_int32_t seq, struct ssh *ssh)
 {
        Channel *c;
        int id;
@@ -2706,7 +2705,7 @@ channel_input_window_adjust(int type, u_int32_t seq, void *ctxt)
                logit("Received window adjust for non-open channel %d.", id);
                return 0;
        }
-       if (channel_proxy_upstream(c, type, seq, ctxt))
+       if (channel_proxy_upstream(c, type, seq, ssh))
                return 0;
        adjust = packet_get_int();
        packet_check_eom();
@@ -2720,7 +2719,7 @@ channel_input_window_adjust(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-channel_input_status_confirm(int type, u_int32_t seq, void *ctxt)
+channel_input_status_confirm(int type, u_int32_t seq, struct ssh *ssh)
 {
        Channel *c;
        struct channel_confirm *cc;
@@ -2736,7 +2735,7 @@ channel_input_status_confirm(int type, u_int32_t seq, void *ctxt)
                logit("channel_input_status_confirm: %d: unknown", id);
                return 0;
        }       
-       if (channel_proxy_upstream(c, type, seq, ctxt))
+       if (channel_proxy_upstream(c, type, seq, ssh))
                return 0;
        packet_check_eom();
        if ((cc = TAILQ_FIRST(&c->status_confirms)) == NULL)
index 8f6872c..83130d8 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: channels.h,v 1.125 2017/05/26 19:35:50 markus Exp $ */
+/* $OpenBSD: channels.h,v 1.126 2017/05/30 14:23:52 markus Exp $ */
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -61,6 +61,7 @@
 
 #define CHANNEL_CANCEL_PORT_STATIC     -1
 
+struct ssh;
 struct Channel;
 typedef struct Channel Channel;
 
@@ -229,18 +230,19 @@ void       channel_send_window_changes(void);
 /* mux proxy support */
 
 int     channel_proxy_downstream(Channel *mc);
-int     channel_proxy_upstream(Channel *, int, u_int32_t, void *);
+int     channel_proxy_upstream(Channel *, int, u_int32_t, struct ssh *);
 
 /* protocol handler */
 
-int     channel_input_data(int, u_int32_t, void *);
-int     channel_input_extended_data(int, u_int32_t, void *);
-int     channel_input_ieof(int, u_int32_t, void *);
-int     channel_input_oclose(int, u_int32_t, void *);
-int     channel_input_open_confirmation(int, u_int32_t, void *);
-int     channel_input_open_failure(int, u_int32_t, void *);
-int     channel_input_window_adjust(int, u_int32_t, void *);
-int     channel_input_status_confirm(int, u_int32_t, void *);
+int     channel_input_data(int, u_int32_t, struct ssh *);
+int     channel_input_extended_data(int, u_int32_t, struct ssh *);
+int     channel_input_ieof(int, u_int32_t, struct ssh *);
+int     channel_input_oclose(int, u_int32_t, struct ssh *);
+int     channel_input_open_confirmation(int, u_int32_t, struct ssh *);
+int     channel_input_open_failure(int, u_int32_t, struct ssh *);
+int     channel_input_port_open(int, u_int32_t, struct ssh *);
+int     channel_input_window_adjust(int, u_int32_t, struct ssh *);
+int     channel_input_status_confirm(int, u_int32_t, struct ssh *);
 
 /* file descriptor handling (read/write) */
 
index b61aa2d..400e8bb 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: clientloop.c,v 1.296 2017/05/03 21:08:09 naddy Exp $ */
+/* $OpenBSD: clientloop.c,v 1.297 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -451,7 +451,7 @@ client_check_window_change(void)
 }
 
 static int
-client_global_request_reply(int type, u_int32_t seq, void *ctxt)
+client_global_request_reply(int type, u_int32_t seq, struct ssh *ssh)
 {
        struct global_confirm *gc;
 
@@ -1627,7 +1627,7 @@ client_request_tun_fwd(int tun_mode, int local_tun, int remote_tun)
 
 /* XXXX move to generic input handler */
 static int
-client_input_channel_open(int type, u_int32_t seq, void *ctxt)
+client_input_channel_open(int type, u_int32_t seq, struct ssh *ssh)
 {
        Channel *c = NULL;
        char *ctype;
@@ -1683,7 +1683,7 @@ client_input_channel_open(int type, u_int32_t seq, void *ctxt)
 }
 
 static int
-client_input_channel_req(int type, u_int32_t seq, void *ctxt)
+client_input_channel_req(int type, u_int32_t seq, struct ssh *ssh)
 {
        Channel *c = NULL;
        int exitval, id, reply, success = 0;
@@ -1691,7 +1691,7 @@ client_input_channel_req(int type, u_int32_t seq, void *ctxt)
 
        id = packet_get_int();
        c = channel_lookup(id);
-       if (channel_proxy_upstream(c, type, seq, ctxt))
+       if (channel_proxy_upstream(c, type, seq, ssh))
                return 0;
        rtype = packet_get_string(NULL);
        reply = packet_get_char();
@@ -2121,7 +2121,7 @@ client_input_hostkeys(void)
 }
 
 static int
-client_input_global_request(int type, u_int32_t seq, void *ctxt)
+client_input_global_request(int type, u_int32_t seq, struct ssh *ssh)
 {
        char *rtype;
        int want_reply;
index d38ed16..0436dc0 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: dispatch.c,v 1.29 2017/04/30 23:28:42 djm Exp $ */
+/* $OpenBSD: dispatch.c,v 1.30 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
  *
@@ -36,9 +36,8 @@
 #include "ssherr.h"
 
 int
-dispatch_protocol_error(int type, u_int32_t seq, void *ctx)
+dispatch_protocol_error(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = active_state; /* XXX */
        int r;
 
        logit("dispatch_protocol_error: type %d seq %u", type, seq);
@@ -51,7 +50,7 @@ dispatch_protocol_error(int type, u_int32_t seq, void *ctx)
 }
 
 int
-dispatch_protocol_ignore(int type, u_int32_t seq, void *ssh)
+dispatch_protocol_ignore(int type, u_int32_t seq, struct ssh *ssh)
 {
        logit("dispatch_protocol_ignore: type %d seq %u", type, seq);
        return 0;
index cd51dbc..7dfc74e 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: dispatch.h,v 1.12 2015/01/19 20:07:45 markus Exp $ */
+/* $OpenBSD: dispatch.h,v 1.13 2017/05/30 14:23:52 markus Exp $ */
 
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
@@ -36,10 +36,10 @@ enum {
 
 struct ssh;
 
-typedef int dispatch_fn(int, u_int32_t, void *);
+typedef int dispatch_fn(int, u_int32_t, struct ssh *);
 
-int    dispatch_protocol_error(int, u_int32_t, void *);
-int    dispatch_protocol_ignore(int, u_int32_t, void *);
+int    dispatch_protocol_error(int, u_int32_t, struct ssh *);
+int    dispatch_protocol_ignore(int, u_int32_t, struct ssh *);
 void   ssh_dispatch_init(struct ssh *, dispatch_fn *);
 void   ssh_dispatch_set(struct ssh *, int, dispatch_fn *);
 void   ssh_dispatch_range(struct ssh *, u_int, u_int, dispatch_fn *);
index 40dfb09..13d0d23 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kex.c,v 1.132 2017/04/30 23:10:43 djm Exp $ */
+/* $OpenBSD: kex.c,v 1.133 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
  *
@@ -52,7 +52,7 @@
 
 /* prototype */
 static int kex_choose_conf(struct ssh *);
-static int kex_input_newkeys(int, u_int32_t, void *);
+static int kex_input_newkeys(int, u_int32_t, struct ssh *);
 
 static const char *proposal_names[PROPOSAL_MAX] = {
        "KEX algorithms",
@@ -303,9 +303,8 @@ kex_prop_free(char **proposal)
 
 /* ARGSUSED */
 static int
-kex_protocol_error(int type, u_int32_t seq, void *ctxt)
+kex_protocol_error(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = active_state; /* XXX */
        int r;
 
        error("kex protocol error: type %d seq %u", type, seq);
@@ -363,9 +362,8 @@ kex_send_newkeys(struct ssh *ssh)
 }
 
 int
-kex_input_ext_info(int type, u_int32_t seq, void *ctxt)
+kex_input_ext_info(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        u_int32_t i, ninfo;
        char *name, *val, *found;
@@ -402,9 +400,8 @@ kex_input_ext_info(int type, u_int32_t seq, void *ctxt)
 }
 
 static int
-kex_input_newkeys(int type, u_int32_t seq, void *ctxt)
+kex_input_newkeys(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        int r;
 
@@ -455,9 +452,8 @@ kex_send_kexinit(struct ssh *ssh)
 
 /* ARGSUSED */
 int
-kex_input_kexinit(int type, u_int32_t seq, void *ctxt)
+kex_input_kexinit(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        const u_char *ptr;
        u_int i;
index 15b1e6c..76f7328 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kex.h,v 1.82 2017/05/03 21:08:09 naddy Exp $ */
+/* $OpenBSD: kex.h,v 1.83 2017/05/30 14:23:52 markus Exp $ */
 
 /*
  * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
@@ -167,8 +167,8 @@ int  kex_prop2buf(struct sshbuf *, char *proposal[PROPOSAL_MAX]);
 void    kex_prop_free(char **);
 
 int     kex_send_kexinit(struct ssh *);
-int     kex_input_kexinit(int, u_int32_t, void *);
-int     kex_input_ext_info(int, u_int32_t, void *);
+int     kex_input_kexinit(int, u_int32_t, struct ssh *);
+int     kex_input_ext_info(int, u_int32_t, struct ssh *);
 int     kex_derive_keys(struct ssh *, u_char *, u_int, const struct sshbuf *);
 int     kex_derive_keys_bn(struct ssh *, u_char *, u_int, const BIGNUM *);
 int     kex_send_newkeys(struct ssh *);
index e283ba5..efc2772 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kexdhc.c,v 1.19 2016/05/02 10:26:04 djm Exp $ */
+/* $OpenBSD: kexdhc.c,v 1.20 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
  *
@@ -44,7 +44,7 @@
 #include "ssherr.h"
 #include "sshbuf.h"
 
-static int input_kex_dh(int, u_int32_t, void *);
+static int input_kex_dh(int, u_int32_t, struct ssh *);
 
 int
 kexdh_client(struct ssh *ssh)
@@ -95,9 +95,8 @@ kexdh_client(struct ssh *ssh)
 }
 
 static int
-input_kex_dh(int type, u_int32_t seq, void *ctxt)
+input_kex_dh(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        BIGNUM *dh_server_pub = NULL, *shared_secret = NULL;
        struct sshkey *server_host_key = NULL;
index de7fdac..6dae3b2 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kexdhs.c,v 1.24 2016/05/02 10:26:04 djm Exp $ */
+/* $OpenBSD: kexdhs.c,v 1.25 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
  *
@@ -44,7 +44,7 @@
 #include "ssherr.h"
 #include "sshbuf.h"
 
-static int input_kex_dh_init(int, u_int32_t, void *);
+static int input_kex_dh_init(int, u_int32_t, struct ssh *);
 
 int
 kexdh_server(struct ssh *ssh)
@@ -86,9 +86,8 @@ kexdh_server(struct ssh *ssh)
 }
 
 int
-input_kex_dh_init(int type, u_int32_t seq, void *ctxt)
+input_kex_dh_init(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        BIGNUM *shared_secret = NULL, *dh_client_pub = NULL;
        struct sshkey *server_host_public, *server_host_private;
index 63b6e10..3222803 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kexecdhc.c,v 1.10 2015/01/26 06:10:03 djm Exp $ */
+/* $OpenBSD: kexecdhc.c,v 1.11 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
  * Copyright (c) 2010 Damien Miller.  All rights reserved.
@@ -45,7 +45,7 @@
 #include "ssherr.h"
 #include "sshbuf.h"
 
-static int input_kex_ecdh_reply(int, u_int32_t, void *);
+static int input_kex_ecdh_reply(int, u_int32_t, struct ssh *);
 
 int
 kexecdh_client(struct ssh *ssh)
@@ -91,9 +91,8 @@ kexecdh_client(struct ssh *ssh)
 }
 
 static int
-input_kex_ecdh_reply(int type, u_int32_t seq, void *ctxt)
+input_kex_ecdh_reply(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        const EC_GROUP *group;
        EC_POINT *server_public = NULL;
index 5249095..4392198 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kexecdhs.c,v 1.15 2015/12/04 16:41:28 markus Exp $ */
+/* $OpenBSD: kexecdhs.c,v 1.16 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
  * Copyright (c) 2010 Damien Miller.  All rights reserved.
@@ -43,7 +43,7 @@
 #include "ssherr.h"
 #include "sshbuf.h"
 
-static int input_kex_ecdh_init(int, u_int32_t, void *);
+static int input_kex_ecdh_init(int, u_int32_t, struct ssh *);
 
 int
 kexecdh_server(struct ssh *ssh)
@@ -54,9 +54,8 @@ kexecdh_server(struct ssh *ssh)
 }
 
 static int
-input_kex_ecdh_init(int type, u_int32_t seq, void *ctxt)
+input_kex_ecdh_init(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        EC_POINT *client_public;
        EC_KEY *server_key = NULL;
index 70ee2e3..6107486 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kexgexc.c,v 1.24 2017/05/16 16:56:15 djm Exp $ */
+/* $OpenBSD: kexgexc.c,v 1.25 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2000 Niels Provos.  All rights reserved.
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
@@ -46,8 +46,8 @@
 #include "sshbuf.h"
 #include "misc.h"
 
-static int input_kex_dh_gex_group(int, u_int32_t, void *);
-static int input_kex_dh_gex_reply(int, u_int32_t, void *);
+static int input_kex_dh_gex_group(int, u_int32_t, struct ssh *);
+static int input_kex_dh_gex_reply(int, u_int32_t, struct ssh *);
 
 int
 kexgex_client(struct ssh *ssh)
@@ -84,9 +84,8 @@ kexgex_client(struct ssh *ssh)
 }
 
 static int
-input_kex_dh_gex_group(int type, u_int32_t seq, void *ctxt)
+input_kex_dh_gex_group(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        BIGNUM *p = NULL, *g = NULL;
        int r, bits;
@@ -138,9 +137,8 @@ out:
 }
 
 static int
-input_kex_dh_gex_reply(int type, u_int32_t seq, void *ctxt)
+input_kex_dh_gex_reply(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        BIGNUM *dh_server_pub = NULL, *shared_secret = NULL;
        struct sshkey *server_host_key = NULL;
index e58db3c..7f9bce7 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: kexgexs.c,v 1.30 2016/09/12 01:22:38 deraadt Exp $ */
+/* $OpenBSD: kexgexs.c,v 1.31 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2000 Niels Provos.  All rights reserved.
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
@@ -49,8 +49,8 @@
 #include "sshbuf.h"
 #include "misc.h"
 
-static int input_kex_dh_gex_request(int, u_int32_t, void *);
-static int input_kex_dh_gex_init(int, u_int32_t, void *);
+static int input_kex_dh_gex_request(int, u_int32_t, struct ssh *);
+static int input_kex_dh_gex_init(int, u_int32_t, struct ssh *);
 
 int
 kexgex_server(struct ssh *ssh)
@@ -62,9 +62,8 @@ kexgex_server(struct ssh *ssh)
 }
 
 static int
-input_kex_dh_gex_request(int type, u_int32_t seq, void *ctxt)
+input_kex_dh_gex_request(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        int r;
        u_int min = 0, max = 0, nbits = 0;
@@ -115,9 +114,8 @@ input_kex_dh_gex_request(int type, u_int32_t seq, void *ctxt)
 }
 
 static int
-input_kex_dh_gex_init(int type, u_int32_t seq, void *ctxt)
+input_kex_dh_gex_init(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        struct kex *kex = ssh->kex;
        BIGNUM *shared_secret = NULL, *dh_client_pub = NULL;
        struct sshkey *server_host_public, *server_host_private;
index 8d77c1c..f02b837 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: serverloop.c,v 1.191 2017/02/01 02:59:09 dtucker Exp $ */
+/* $OpenBSD: serverloop.c,v 1.192 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -410,7 +410,7 @@ server_loop2(Authctxt *authctxt)
 }
 
 static int
-server_input_keep_alive(int type, u_int32_t seq, void *ctxt)
+server_input_keep_alive(int type, u_int32_t seq, struct ssh *ssh)
 {
        debug("Got %d/%u for keepalive", type, seq);
        /*
@@ -567,7 +567,7 @@ server_request_session(void)
 }
 
 static int
-server_input_channel_open(int type, u_int32_t seq, void *ctxt)
+server_input_channel_open(int type, u_int32_t seq, struct ssh *ssh)
 {
        Channel *c = NULL;
        char *ctype;
@@ -691,7 +691,7 @@ server_input_hostkeys_prove(struct sshbuf **respp)
 }
 
 static int
-server_input_global_request(int type, u_int32_t seq, void *ctxt)
+server_input_global_request(int type, u_int32_t seq, struct ssh *ssh)
 {
        char *rtype;
        int want_reply;
@@ -798,7 +798,7 @@ server_input_global_request(int type, u_int32_t seq, void *ctxt)
 }
 
 static int
-server_input_channel_req(int type, u_int32_t seq, void *ctxt)
+server_input_channel_req(int type, u_int32_t seq, struct ssh *ssh)
 {
        Channel *c;
        int id, reply, success = 0;
index 59b2754..c7ca0e4 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshconnect2.c,v 1.260 2017/05/30 14:19:15 markus Exp $ */
+/* $OpenBSD: sshconnect2.c,v 1.261 2017/05/30 14:23:52 markus Exp $ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
  * Copyright (c) 2008 Damien Miller.  All rights reserved.
@@ -279,16 +279,16 @@ struct cauthmethod {
        int     *batch_flag;    /* flag in option struct that disables method */
 };
 
-int    input_userauth_service_accept(int, u_int32_t, void *);
-int    input_userauth_ext_info(int, u_int32_t, void *);
-int    input_userauth_success(int, u_int32_t, void *);
-int    input_userauth_success_unexpected(int, u_int32_t, void *);
-int    input_userauth_failure(int, u_int32_t, void *);
-int    input_userauth_banner(int, u_int32_t, void *);
-int    input_userauth_error(int, u_int32_t, void *);
-int    input_userauth_info_req(int, u_int32_t, void *);
-int    input_userauth_pk_ok(int, u_int32_t, void *);
-int    input_userauth_passwd_changereq(int, u_int32_t, void *);
+int    input_userauth_service_accept(int, u_int32_t, struct ssh *);
+int    input_userauth_ext_info(int, u_int32_t, struct ssh *);
+int    input_userauth_success(int, u_int32_t, struct ssh *);
+int    input_userauth_success_unexpected(int, u_int32_t, struct ssh *);
+int    input_userauth_failure(int, u_int32_t, struct ssh *);
+int    input_userauth_banner(int, u_int32_t, struct ssh *);
+int    input_userauth_error(int, u_int32_t, struct ssh *);
+int    input_userauth_info_req(int, u_int32_t, struct ssh *);
+int    input_userauth_pk_ok(int, u_int32_t, struct ssh *);
+int    input_userauth_passwd_changereq(int, u_int32_t, struct ssh *);
 
 int    userauth_none(Authctxt *);
 int    userauth_pubkey(Authctxt *);
@@ -298,11 +298,11 @@ int       userauth_hostbased(Authctxt *);
 
 #ifdef GSSAPI
 int    userauth_gssapi(Authctxt *authctxt);
-int    input_gssapi_response(int type, u_int32_t, void *);
-int    input_gssapi_token(int type, u_int32_t, void *);
-int    input_gssapi_hash(int type, u_int32_t, void *);
-int    input_gssapi_error(int, u_int32_t, void *);
-int    input_gssapi_errtok(int, u_int32_t, void *);
+int    input_gssapi_response(int type, u_int32_t, struct ssh *);
+int    input_gssapi_token(int type, u_int32_t, struct ssh *);
+int    input_gssapi_hash(int type, u_int32_t, struct ssh *);
+int    input_gssapi_error(int, u_int32_t, struct ssh *);
+int    input_gssapi_errtok(int, u_int32_t, struct ssh *);
 #endif
 
 void   userauth(Authctxt *, char *);
@@ -406,9 +406,8 @@ ssh_userauth2(const char *local_user, const char *server_user, char *host,
 
 /* ARGSUSED */
 int
-input_userauth_service_accept(int type, u_int32_t seqnr, void *ctxt)
+input_userauth_service_accept(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        int r;
 
@@ -440,9 +439,9 @@ input_userauth_service_accept(int type, u_int32_t seqnr, void *ctxt)
 
 /* ARGSUSED */
 int
-input_userauth_ext_info(int type, u_int32_t seqnr, void *ctxt)
+input_userauth_ext_info(int type, u_int32_t seqnr, struct ssh *ssh)
 {
-       return kex_input_ext_info(type, seqnr, ctxt);
+       return kex_input_ext_info(type, seqnr, ssh);
 }
 
 void
@@ -482,7 +481,7 @@ userauth(Authctxt *authctxt, char *authlist)
 
 /* ARGSUSED */
 int
-input_userauth_error(int type, u_int32_t seq, void *ctxt)
+input_userauth_error(int type, u_int32_t seq, struct ssh *ssh)
 {
        fatal("input_userauth_error: bad message during authentication: "
            "type %d", type);
@@ -491,7 +490,7 @@ input_userauth_error(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-input_userauth_banner(int type, u_int32_t seq, void *ctxt)
+input_userauth_banner(int type, u_int32_t seq, struct ssh *ssh)
 {
        char *msg, *lang;
        u_int len;
@@ -508,9 +507,8 @@ input_userauth_banner(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-input_userauth_success(int type, u_int32_t seq, void *ctxt)
+input_userauth_success(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
 
        if (authctxt == NULL)
@@ -526,9 +524,8 @@ input_userauth_success(int type, u_int32_t seq, void *ctxt)
 }
 
 int
-input_userauth_success_unexpected(int type, u_int32_t seq, void *ctxt)
+input_userauth_success_unexpected(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
 
        if (authctxt == NULL)
@@ -541,9 +538,8 @@ input_userauth_success_unexpected(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-input_userauth_failure(int type, u_int32_t seq, void *ctxt)
+input_userauth_failure(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        char *authlist = NULL;
        int partial;
@@ -568,9 +564,8 @@ input_userauth_failure(int type, u_int32_t seq, void *ctxt)
 
 /* ARGSUSED */
 int
-input_userauth_pk_ok(int type, u_int32_t seq, void *ctxt)
+input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        struct sshkey *key = NULL;
        Identity *id = NULL;
@@ -756,9 +751,8 @@ process_gssapi_token(void *ctxt, gss_buffer_t recv_tok)
 
 /* ARGSUSED */
 int
-input_gssapi_response(int type, u_int32_t plen, void *ctxt)
+input_gssapi_response(int type, u_int32_t plen, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        Gssctxt *gssctxt;
        int oidlen;
@@ -798,9 +792,8 @@ input_gssapi_response(int type, u_int32_t plen, void *ctxt)
 
 /* ARGSUSED */
 int
-input_gssapi_token(int type, u_int32_t plen, void *ctxt)
+input_gssapi_token(int type, u_int32_t plen, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        gss_buffer_desc recv_tok;
        OM_uint32 status;
@@ -828,9 +821,8 @@ input_gssapi_token(int type, u_int32_t plen, void *ctxt)
 
 /* ARGSUSED */
 int
-input_gssapi_errtok(int type, u_int32_t plen, void *ctxt)
+input_gssapi_errtok(int type, u_int32_t plen, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        Gssctxt *gssctxt;
        gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
@@ -860,7 +852,7 @@ input_gssapi_errtok(int type, u_int32_t plen, void *ctxt)
 
 /* ARGSUSED */
 int
-input_gssapi_error(int type, u_int32_t plen, void *ctxt)
+input_gssapi_error(int type, u_int32_t plen, struct ssh *ssh)
 {
        char *msg;
        char *lang;
@@ -931,9 +923,8 @@ userauth_passwd(Authctxt *authctxt)
  */
 /* ARGSUSED */
 int
-input_userauth_passwd_changereq(int type, u_int32_t seqnr, void *ctxt)
+input_userauth_passwd_changereq(int type, u_int32_t seqnr, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        char *info, *lang, *password = NULL, *retype = NULL;
        char prompt[150];
@@ -1562,9 +1553,8 @@ userauth_kbdint(Authctxt *authctxt)
  * parse INFO_REQUEST, prompt user and send INFO_RESPONSE
  */
 int
-input_userauth_info_req(int type, u_int32_t seq, void *ctxt)
+input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh)
 {
-       struct ssh *ssh = ctxt;
        Authctxt *authctxt = ssh->authctxt;
        char *name, *inst, *lang, *prompt, *response;
        u_int num_prompts, i;