X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/50b1791f4a51423f2d84976d649f4c18083717f2..d40a94b97d318ea943d466abf6c123a71bcbf87a:/ssh.c diff --git a/ssh.c b/ssh.c index 795dc4f4..1077b335 100644 --- a/ssh.c +++ b/ssh.c @@ -1193,7 +1193,8 @@ static int do_ssh_init(unsigned char c) { /* * This is a v2 server. Begin v2 protocol. */ - char *verstring = "SSH-2.0-PuTTY"; + char verstring[80]; + sprintf(verstring, "SSH-2.0-%s", sshver); SHA_Init(&exhashbase); /* * Hash our version string and their version string. @@ -1212,8 +1213,9 @@ static int do_ssh_init(unsigned char c) { /* * This is a v1 server. Begin v1 protocol. */ - sprintf(vstring, "SSH-%s-PuTTY\n", - (ssh_versioncmp(version, "1.5") <= 0 ? version : "1.5")); + sprintf(vstring, "SSH-%s-%s\n", + (ssh_versioncmp(version, "1.5") <= 0 ? version : "1.5"), + sshver); sprintf(vlog, "We claim version: %s", vstring); vlog[strcspn(vlog, "\r\n")] = '\0'; logevent(vlog); @@ -1608,7 +1610,8 @@ static int do_ssh1_login(unsigned char *in, int inlen, int ispkt) request[4] = SSH1_AGENTC_REQUEST_RSA_IDENTITIES; agent_query(request, 5, &r, &responselen); response = (unsigned char *)r; - if (response) { + if (response && responselen >= 5 && + response[4] == SSH1_AGENT_RSA_IDENTITIES_ANSWER) { p = response + 5; nkeys = GET_32BIT(p); p += 4; { char buf[64]; sprintf(buf, "Pageant has %d SSH1 keys", nkeys); @@ -2869,7 +2872,7 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt) */ logevent("No username provided. Abandoning session."); ssh_state = SSH_STATE_CLOSED; - crReturn(1); + crReturnV; } } else { c_write_str("login as: "); @@ -3035,7 +3038,8 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt) request[4] = SSH2_AGENTC_REQUEST_IDENTITIES; agent_query(request, 5, &r, &responselen); response = (unsigned char *)r; - if (response) { + if (response && responselen >= 5 && + response[4] == SSH2_AGENT_IDENTITIES_ANSWER) { p = response + 5; nkeys = GET_32BIT(p); p += 4; { char buf[64]; sprintf(buf, "Pageant has %d SSH2 keys", nkeys); @@ -3456,7 +3460,6 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt) * Potentially enable agent forwarding. */ if (cfg.agentfwd && agent_exists()) { - char proto[20], data[64]; logevent("Requesting OpenSSH-style agent forwarding"); ssh2_pkt_init(SSH2_MSG_CHANNEL_REQUEST); ssh2_pkt_adduint32(mainchan->remoteid);