1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-03-22 14:39:24 -05:00

Change return type of do_ssh2_transport() to void.

Nothing pays attention to it any more, anyway.

[originally from svn r9635]
This commit is contained in:
Ben Harris 2012-08-27 22:02:17 +00:00
parent 3cc03d85e7
commit e27ce2017e

76
ssh.c
View File

@ -780,8 +780,8 @@ static unsigned long ssh_pkt_getuint32(struct Packet *pkt);
static int ssh2_pkt_getbool(struct Packet *pkt); static int ssh2_pkt_getbool(struct Packet *pkt);
static void ssh_pkt_getstring(struct Packet *pkt, char **p, int *length); static void ssh_pkt_getstring(struct Packet *pkt, char **p, int *length);
static void ssh2_timer(void *ctx, long now); static void ssh2_timer(void *ctx, long now);
static int do_ssh2_transport(Ssh ssh, void *vin, int inlen, static void do_ssh2_transport(Ssh ssh, void *vin, int inlen,
struct Packet *pktin); struct Packet *pktin);
static void ssh2_msg_unexpected(Ssh ssh, struct Packet *pktin); static void ssh2_msg_unexpected(Ssh ssh, struct Packet *pktin);
struct rdpkt1_state_tag { struct rdpkt1_state_tag {
@ -5476,7 +5476,7 @@ static void ssh2_mkkey(Ssh ssh, Bignum K, unsigned char *H, char chr,
/* /*
* Handle the SSH-2 transport layer. * Handle the SSH-2 transport layer.
*/ */
static int do_ssh2_transport(Ssh ssh, void *vin, int inlen, static void do_ssh2_transport(Ssh ssh, void *vin, int inlen,
struct Packet *pktin) struct Packet *pktin)
{ {
unsigned char *in = (unsigned char *)vin; unsigned char *in = (unsigned char *)vin;
@ -5717,7 +5717,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
ssh2_pkt_send_noqueue(ssh, s->pktout); ssh2_pkt_send_noqueue(ssh, s->pktout);
if (!pktin) if (!pktin)
crWaitUntil(pktin); crWaitUntilV(pktin);
/* /*
* Now examine the other side's KEXINIT to see what we're up * Now examine the other side's KEXINIT to see what we're up
@ -5729,7 +5729,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (pktin->type != SSH2_MSG_KEXINIT) { if (pktin->type != SSH2_MSG_KEXINIT) {
bombout(("expected key exchange packet from server")); bombout(("expected key exchange packet from server"));
crStop(0); crStopV;
} }
ssh->kex = NULL; ssh->kex = NULL;
ssh->hostkey = NULL; ssh->hostkey = NULL;
@ -5764,7 +5764,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (!ssh->kex) { if (!ssh->kex) {
bombout(("Couldn't agree a key exchange algorithm (available: %s)", bombout(("Couldn't agree a key exchange algorithm (available: %s)",
str ? str : "(null)")); str ? str : "(null)"));
crStop(0); crStopV;
} }
/* /*
* Note that the server's guess is considered wrong if it doesn't match * Note that the server's guess is considered wrong if it doesn't match
@ -5782,7 +5782,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (!ssh->hostkey) { if (!ssh->hostkey) {
bombout(("Couldn't agree a host key algorithm (available: %s)", bombout(("Couldn't agree a host key algorithm (available: %s)",
str ? str : "(null)")); str ? str : "(null)"));
crStop(0); crStopV;
} }
s->guessok = s->guessok && s->guessok = s->guessok &&
@ -5806,7 +5806,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (!s->cscipher_tobe) { if (!s->cscipher_tobe) {
bombout(("Couldn't agree a client-to-server cipher (available: %s)", bombout(("Couldn't agree a client-to-server cipher (available: %s)",
str ? str : "(null)")); str ? str : "(null)"));
crStop(0); crStopV;
} }
ssh_pkt_getstring(pktin, &str, &len); /* server->client cipher */ ssh_pkt_getstring(pktin, &str, &len); /* server->client cipher */
@ -5828,7 +5828,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (!s->sccipher_tobe) { if (!s->sccipher_tobe) {
bombout(("Couldn't agree a server-to-client cipher (available: %s)", bombout(("Couldn't agree a server-to-client cipher (available: %s)",
str ? str : "(null)")); str ? str : "(null)"));
crStop(0); crStopV;
} }
ssh_pkt_getstring(pktin, &str, &len); /* client->server mac */ ssh_pkt_getstring(pktin, &str, &len); /* client->server mac */
@ -5892,11 +5892,11 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
ssh_dialog_callback, ssh); ssh_dialog_callback, ssh);
if (s->dlgret < 0) { if (s->dlgret < 0) {
do { do {
crReturn(0); crReturnV;
if (pktin) { if (pktin) {
bombout(("Unexpected data from server while" bombout(("Unexpected data from server while"
" waiting for user response")); " waiting for user response"));
crStop(0); crStopV;
} }
} while (pktin || inlen > 0); } while (pktin || inlen > 0);
s->dlgret = ssh->user_response; s->dlgret = ssh->user_response;
@ -5905,7 +5905,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (s->dlgret == 0) { if (s->dlgret == 0) {
ssh_disconnect(ssh, "User aborted at kex warning", NULL, ssh_disconnect(ssh, "User aborted at kex warning", NULL,
0, TRUE); 0, TRUE);
crStop(0); crStopV;
} }
} }
@ -5917,11 +5917,11 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
ssh_dialog_callback, ssh); ssh_dialog_callback, ssh);
if (s->dlgret < 0) { if (s->dlgret < 0) {
do { do {
crReturn(0); crReturnV;
if (pktin) { if (pktin) {
bombout(("Unexpected data from server while" bombout(("Unexpected data from server while"
" waiting for user response")); " waiting for user response"));
crStop(0); crStopV;
} }
} while (pktin || inlen > 0); } while (pktin || inlen > 0);
s->dlgret = ssh->user_response; s->dlgret = ssh->user_response;
@ -5930,7 +5930,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (s->dlgret == 0) { if (s->dlgret == 0) {
ssh_disconnect(ssh, "User aborted at cipher warning", NULL, ssh_disconnect(ssh, "User aborted at cipher warning", NULL,
0, TRUE); 0, TRUE);
crStop(0); crStopV;
} }
} }
@ -5942,11 +5942,11 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
ssh_dialog_callback, ssh); ssh_dialog_callback, ssh);
if (s->dlgret < 0) { if (s->dlgret < 0) {
do { do {
crReturn(0); crReturnV;
if (pktin) { if (pktin) {
bombout(("Unexpected data from server while" bombout(("Unexpected data from server while"
" waiting for user response")); " waiting for user response"));
crStop(0); crStopV;
} }
} while (pktin || inlen > 0); } while (pktin || inlen > 0);
s->dlgret = ssh->user_response; s->dlgret = ssh->user_response;
@ -5955,7 +5955,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (s->dlgret == 0) { if (s->dlgret == 0) {
ssh_disconnect(ssh, "User aborted at cipher warning", NULL, ssh_disconnect(ssh, "User aborted at cipher warning", NULL,
0, TRUE); 0, TRUE);
crStop(0); crStopV;
} }
} }
@ -5970,7 +5970,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
pktin->data + 5, pktin->length - 5); pktin->data + 5, pktin->length - 5);
if (s->ignorepkt) /* first_kex_packet_follows */ if (s->ignorepkt) /* first_kex_packet_follows */
crWaitUntil(pktin); /* Ignore packet */ crWaitUntilV(pktin); /* Ignore packet */
} }
if (ssh->kex->main_type == KEXTYPE_DH) { if (ssh->kex->main_type == KEXTYPE_DH) {
@ -6007,16 +6007,16 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
ssh2_pkt_adduint32(s->pktout, s->pbits); ssh2_pkt_adduint32(s->pktout, s->pbits);
ssh2_pkt_send_noqueue(ssh, s->pktout); ssh2_pkt_send_noqueue(ssh, s->pktout);
crWaitUntil(pktin); crWaitUntilV(pktin);
if (pktin->type != SSH2_MSG_KEX_DH_GEX_GROUP) { if (pktin->type != SSH2_MSG_KEX_DH_GEX_GROUP) {
bombout(("expected key exchange group packet from server")); bombout(("expected key exchange group packet from server"));
crStop(0); crStopV;
} }
s->p = ssh2_pkt_getmp(pktin); s->p = ssh2_pkt_getmp(pktin);
s->g = ssh2_pkt_getmp(pktin); s->g = ssh2_pkt_getmp(pktin);
if (!s->p || !s->g) { if (!s->p || !s->g) {
bombout(("unable to read mp-ints from incoming group packet")); bombout(("unable to read mp-ints from incoming group packet"));
crStop(0); crStopV;
} }
ssh->kex_ctx = dh_setup_gex(s->p, s->g); ssh->kex_ctx = dh_setup_gex(s->p, s->g);
s->kex_init_value = SSH2_MSG_KEX_DH_GEX_INIT; s->kex_init_value = SSH2_MSG_KEX_DH_GEX_INIT;
@ -6042,10 +6042,10 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
ssh2_pkt_send_noqueue(ssh, s->pktout); ssh2_pkt_send_noqueue(ssh, s->pktout);
set_busy_status(ssh->frontend, BUSY_WAITING); /* wait for server */ set_busy_status(ssh->frontend, BUSY_WAITING); /* wait for server */
crWaitUntil(pktin); crWaitUntilV(pktin);
if (pktin->type != s->kex_reply_value) { if (pktin->type != s->kex_reply_value) {
bombout(("expected key exchange reply packet from server")); bombout(("expected key exchange reply packet from server"));
crStop(0); crStopV;
} }
set_busy_status(ssh->frontend, BUSY_CPU); /* cogitate */ set_busy_status(ssh->frontend, BUSY_CPU); /* cogitate */
ssh_pkt_getstring(pktin, &s->hostkeydata, &s->hostkeylen); ssh_pkt_getstring(pktin, &s->hostkeydata, &s->hostkeylen);
@ -6053,7 +6053,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
s->f = ssh2_pkt_getmp(pktin); s->f = ssh2_pkt_getmp(pktin);
if (!s->f) { if (!s->f) {
bombout(("unable to parse key exchange reply packet")); bombout(("unable to parse key exchange reply packet"));
crStop(0); crStopV;
} }
ssh_pkt_getstring(pktin, &s->sigdata, &s->siglen); ssh_pkt_getstring(pktin, &s->sigdata, &s->siglen);
@ -6086,10 +6086,10 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
* RSA key exchange. First expect a KEXRSA_PUBKEY packet * RSA key exchange. First expect a KEXRSA_PUBKEY packet
* from the server. * from the server.
*/ */
crWaitUntil(pktin); crWaitUntilV(pktin);
if (pktin->type != SSH2_MSG_KEXRSA_PUBKEY) { if (pktin->type != SSH2_MSG_KEXRSA_PUBKEY) {
bombout(("expected RSA public key packet from server")); bombout(("expected RSA public key packet from server"));
crStop(0); crStopV;
} }
ssh_pkt_getstring(pktin, &s->hostkeydata, &s->hostkeylen); ssh_pkt_getstring(pktin, &s->hostkeydata, &s->hostkeylen);
@ -6108,7 +6108,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (!s->rsakey) { if (!s->rsakey) {
sfree(s->rsakeydata); sfree(s->rsakeydata);
bombout(("unable to parse RSA public key from server")); bombout(("unable to parse RSA public key from server"));
crStop(0); crStopV;
} }
hash_string(ssh->kex->hash, ssh->exhash, s->rsakeydata, s->rsakeylen); hash_string(ssh->kex->hash, ssh->exhash, s->rsakeydata, s->rsakeylen);
@ -6168,11 +6168,11 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
ssh_rsakex_freekey(s->rsakey); ssh_rsakex_freekey(s->rsakey);
crWaitUntil(pktin); crWaitUntilV(pktin);
if (pktin->type != SSH2_MSG_KEXRSA_DONE) { if (pktin->type != SSH2_MSG_KEXRSA_DONE) {
sfree(s->rsakeydata); sfree(s->rsakeydata);
bombout(("expected signature packet from server")); bombout(("expected signature packet from server"));
crStop(0); crStopV;
} }
ssh_pkt_getstring(pktin, &s->sigdata, &s->siglen); ssh_pkt_getstring(pktin, &s->sigdata, &s->siglen);
@ -6196,7 +6196,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
(char *)s->exchange_hash, (char *)s->exchange_hash,
ssh->kex->hash->hlen)) { ssh->kex->hash->hlen)) {
bombout(("Server's host key did not match the signature supplied")); bombout(("Server's host key did not match the signature supplied"));
crStop(0); crStopV;
} }
/* /*
@ -6213,11 +6213,11 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
ssh_dialog_callback, ssh); ssh_dialog_callback, ssh);
if (s->dlgret < 0) { if (s->dlgret < 0) {
do { do {
crReturn(0); crReturnV;
if (pktin) { if (pktin) {
bombout(("Unexpected data from server while waiting" bombout(("Unexpected data from server while waiting"
" for user host key response")); " for user host key response"));
crStop(0); crStopV;
} }
} while (pktin || inlen > 0); } while (pktin || inlen > 0);
s->dlgret = ssh->user_response; s->dlgret = ssh->user_response;
@ -6226,7 +6226,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
if (s->dlgret == 0) { if (s->dlgret == 0) {
ssh_disconnect(ssh, "User aborted at host key verification", NULL, ssh_disconnect(ssh, "User aborted at host key verification", NULL,
0, TRUE); 0, TRUE);
crStop(0); crStopV;
} }
if (!s->got_session_id) { /* don't bother logging this in rekeys */ if (!s->got_session_id) { /* don't bother logging this in rekeys */
logevent("Host key fingerprint is:"); logevent("Host key fingerprint is:");
@ -6316,10 +6316,10 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
/* /*
* Expect SSH2_MSG_NEWKEYS from server. * Expect SSH2_MSG_NEWKEYS from server.
*/ */
crWaitUntil(pktin); crWaitUntilV(pktin);
if (pktin->type != SSH2_MSG_NEWKEYS) { if (pktin->type != SSH2_MSG_NEWKEYS) {
bombout(("expected new-keys packet from server")); bombout(("expected new-keys packet from server"));
crStop(0); crStopV;
} }
ssh->incoming_data_size = 0; /* start counting from here */ ssh->incoming_data_size = 0; /* start counting from here */
@ -6421,7 +6421,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
*/ */
do_ssh2_authconn(ssh, NULL, 0, NULL); do_ssh2_authconn(ssh, NULL, 0, NULL);
} }
crReturn(1); crReturnV;
} }
if (pktin) { if (pktin) {
logevent("Server initiated key re-exchange"); logevent("Server initiated key re-exchange");
@ -6480,7 +6480,7 @@ static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
} }
goto begin_key_exchange; goto begin_key_exchange;
crFinish(1); crFinishV;
} }
/* /*