X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/6571dbfd83b885249e7783dd381146c4bbc6fdaf..704c0cbcef60a8cbe5bbd6d4bf90e00cc39b285e:/ssh.c diff --git a/ssh.c b/ssh.c index 75da932e..eae4cd53 100644 --- a/ssh.c +++ b/ssh.c @@ -1253,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: @@ -1286,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; @@ -3071,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. */ @@ -3099,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); @@ -3113,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); @@ -3128,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 { @@ -3148,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, @@ -3411,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); @@ -4353,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]; @@ -5119,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. */ @@ -5147,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); @@ -5161,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); @@ -5176,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 { @@ -5197,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); @@ -5903,6 +5892,8 @@ static char *ssh_init(void *frontend_handle, void **backend_handle, 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;