X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=ssh.c;h=eae4cd53c55f39c062b0411b574e2b25f41305c2;hb=93e9fadc751dc6f89d3cb145378ecf4b1beb908b;hp=0cfba57ebe3fb4c3701ff97c81305fd40ed5822b;hpb=4756c15fc9556e2f29bdc65594ea15892f9b5d35;p=PuTTY.git diff --git a/ssh.c b/ssh.c index 0cfba57e..eae4cd53 100644 --- a/ssh.c +++ b/ssh.c @@ -1,4 +1,3 @@ -#include #include #include #include @@ -1254,7 +1253,7 @@ static void construct_packet(Ssh ssh, int pkttype, va_list ap1, va_list ap2) pktlen += 4; break; case PKT_CHAR: - (void) va_arg(ap1, char); + (void) va_arg(ap1, int); pktlen++; break; case PKT_DATA: @@ -1287,7 +1286,7 @@ static void construct_packet(Ssh ssh, int pkttype, va_list ap1, va_list ap2) p += 4; break; case PKT_CHAR: - argchar = va_arg(ap2, unsigned char); + argchar = (unsigned char) va_arg(ap2, int); *p = argchar; p++; break; @@ -3072,7 +3071,6 @@ static void ssh1_protocol(Ssh ssh, unsigned char *in, int inlen, int ispkt) int sport,dport,sserv,dserv; char sports[256], dports[256], host[256]; char buf[1024]; - struct servent *se; ssh->rportfwds = newtree234(ssh_rportcmp_ssh1); /* Add port forwardings. */ @@ -3100,10 +3098,8 @@ static void ssh1_protocol(Ssh ssh, unsigned char *in, int inlen, int ispkt) dserv = 0; if (dport == 0) { dserv = 1; - se = getservbyname(dports, NULL); - if (se != NULL) { - dport = ntohs(se->s_port); - } else { + dport = net_service_lookup(dports); + if (!dport) { sprintf(buf, "Service lookup failed for destination port \"%s\"", dports); @@ -3114,10 +3110,8 @@ static void ssh1_protocol(Ssh ssh, unsigned char *in, int inlen, int ispkt) sserv = 0; if (sport == 0) { sserv = 1; - se = getservbyname(sports, NULL); - if (se != NULL) { - sport = ntohs(se->s_port); - } else { + sport = net_service_lookup(sports); + if (!sport) { sprintf(buf, "Service lookup failed for source port \"%s\"", sports); @@ -3129,10 +3123,10 @@ static void ssh1_protocol(Ssh ssh, unsigned char *in, int inlen, int ispkt) pfd_addforward(host, dport, sport, ssh); sprintf(buf, "Local port %.*s%.*s%d%.*s forwarding to" " %s:%.*s%.*s%d%.*s", - sserv ? strlen(sports) : 0, sports, + (int)(sserv ? strlen(sports) : 0), sports, sserv, "(", sport, sserv, ")", host, - dserv ? strlen(dports) : 0, dports, + (int)(dserv ? strlen(dports) : 0), dports, dserv, "(", dport, dserv, ")"); logevent(buf); } else { @@ -3149,10 +3143,10 @@ static void ssh1_protocol(Ssh ssh, unsigned char *in, int inlen, int ispkt) } else { sprintf(buf, "Requesting remote port %.*s%.*s%d%.*s" " forward to %s:%.*s%.*s%d%.*s", - sserv ? strlen(sports) : 0, sports, + (int)(sserv ? strlen(sports) : 0), sports, sserv, "(", sport, sserv, ")", host, - dserv ? strlen(dports) : 0, dports, + (int)(dserv ? strlen(dports) : 0), dports, dserv, "(", dport, dserv, ")"); logevent(buf); send_packet(ssh, SSH1_CMSG_PORT_FORWARD_REQUEST, @@ -3412,7 +3406,6 @@ static void ssh1_protocol(Ssh ssh, unsigned char *in, int inlen, int ispkt) } else if (ssh->pktin.type == SSH1_MSG_CHANNEL_OPEN_FAILURE) { unsigned int remoteid = GET_32BIT(ssh->pktin.body); - unsigned int localid = GET_32BIT(ssh->pktin.body+4); struct ssh_channel *c; c = find234(ssh->channels, &remoteid, ssh_channelfind); @@ -4354,8 +4347,8 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt) } while (ret == 0); if (ret < 0) cleanup_exit(0); + c_write_str(ssh, "\r\n"); } - c_write_str(ssh, "\r\n"); s->username[strcspn(s->username, "\n\r")] = '\0'; } else { char stuff[200]; @@ -5120,7 +5113,6 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt) int sport,dport,sserv,dserv; char sports[256], dports[256], host[256]; char buf[1024]; - struct servent *se; ssh->rportfwds = newtree234(ssh_rportcmp_ssh2); /* Add port forwardings. */ @@ -5148,10 +5140,8 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt) dserv = 0; if (dport == 0) { dserv = 1; - se = getservbyname(dports, NULL); - if (se != NULL) { - dport = ntohs(se->s_port); - } else { + dport = net_service_lookup(dports); + if (!dport) { sprintf(buf, "Service lookup failed for destination port \"%s\"", dports); @@ -5162,10 +5152,8 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt) sserv = 0; if (sport == 0) { sserv = 1; - se = getservbyname(sports, NULL); - if (se != NULL) { - sport = ntohs(se->s_port); - } else { + sport = net_service_lookup(sports); + if (!sport) { sprintf(buf, "Service lookup failed for source port \"%s\"", sports); @@ -5177,10 +5165,10 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt) pfd_addforward(host, dport, sport, ssh); sprintf(buf, "Local port %.*s%.*s%d%.*s forwarding to" " %s:%.*s%.*s%d%.*s", - sserv ? strlen(sports) : 0, sports, + (int)(sserv ? strlen(sports) : 0), sports, sserv, "(", sport, sserv, ")", host, - dserv ? strlen(dports) : 0, dports, + (int)(dserv ? strlen(dports) : 0), dports, dserv, "(", dport, dserv, ")"); logevent(buf); } else { @@ -5198,10 +5186,10 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt) } else { sprintf(buf, "Requesting remote port %.*s%.*s%d%.*s" " forward to %s:%.*s%.*s%d%.*s", - sserv ? strlen(sports) : 0, sports, + (int)(sserv ? strlen(sports) : 0), sports, sserv, "(", sport, sserv, ")", host, - dserv ? strlen(dports) : 0, dports, + (int)(dserv ? strlen(dports) : 0), dports, dserv, "(", dport, dserv, ")"); logevent(buf); ssh2_pkt_init(ssh, SSH2_MSG_GLOBAL_REQUEST); @@ -5889,6 +5877,7 @@ static char *ssh_init(void *frontend_handle, void **backend_handle, ssh->fallback_cmd = 0; ssh->pkt_ctx = 0; ssh->x11auth = NULL; + ssh->v1_compressing = FALSE; ssh->v2_outgoing_sequence = 0; ssh->ssh1_rdpkt_crstate = 0; ssh->ssh2_rdpkt_crstate = 0; @@ -5902,6 +5891,9 @@ static char *ssh_init(void *frontend_handle, void **backend_handle, ssh->do_ssh1_login_state = NULL; ssh->do_ssh2_transport_state = NULL; ssh->do_ssh2_authconn_state = NULL; + ssh->mainchan = NULL; + ssh->throttled_all = 0; + ssh->v1_stdout_throttling = 0; *backend_handle = ssh;