upstream: convert sshconnect2.c to new packet API

with & ok markus@

OpenBSD-Commit-ID: 1cb869e0d6e03539f943235641ea070cae2ebc58
This commit is contained in:
djm@openbsd.org 2019-01-19 21:34:45 +00:00 committed by Damien Miller
parent 23f22a4aaa
commit ed1df7226c
1 changed files with 16 additions and 13 deletions

View File

@ -1,4 +1,4 @@
/* $OpenBSD: sshconnect2.c,v 1.293 2019/01/19 21:31:32 djm Exp $ */ /* $OpenBSD: sshconnect2.c,v 1.294 2019/01/19 21:34:45 djm Exp $ */
/* /*
* Copyright (c) 2000 Markus Friedl. All rights reserved. * Copyright (c) 2000 Markus Friedl. All rights reserved.
* Copyright (c) 2008 Damien Miller. All rights reserved. * Copyright (c) 2008 Damien Miller. All rights reserved.
@ -197,7 +197,7 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port)
} }
if (options.rekey_limit || options.rekey_interval) if (options.rekey_limit || options.rekey_interval)
packet_set_rekey_limits(options.rekey_limit, ssh_packet_set_rekey_limits(ssh, options.rekey_limit,
options.rekey_interval); options.rekey_interval);
/* start key exchange */ /* start key exchange */
@ -510,17 +510,21 @@ input_userauth_error(int type, u_int32_t seq, struct ssh *ssh)
int int
input_userauth_banner(int type, u_int32_t seq, struct ssh *ssh) input_userauth_banner(int type, u_int32_t seq, struct ssh *ssh)
{ {
char *msg, *lang; char *msg = NULL, *lang = NULL;
u_int len; size_t len;
int r;
debug3("%s", __func__); debug3("%s", __func__);
msg = packet_get_string(&len); if ((r = sshpkt_get_cstring(ssh, &msg, &len)) != 0 ||
lang = packet_get_string(NULL); (r = sshpkt_get_cstring(ssh, &lang, NULL)) != 0)
goto out;
if (len > 0 && options.log_level >= SYSLOG_LEVEL_INFO) if (len > 0 && options.log_level >= SYSLOG_LEVEL_INFO)
fmprintf(stderr, "%s", msg); fmprintf(stderr, "%s", msg);
r = 0;
out:
free(msg); free(msg);
free(lang); free(lang);
return 0; return r;
} }
/* ARGSUSED */ /* ARGSUSED */
@ -1806,13 +1810,13 @@ input_userauth_info_req(int type, u_int32_t seq, struct ssh *ssh)
} }
static int static int
ssh_keysign(struct sshkey *key, u_char **sigp, size_t *lenp, ssh_keysign(struct ssh *ssh, struct sshkey *key, u_char **sigp, size_t *lenp,
const u_char *data, size_t datalen) const u_char *data, size_t datalen)
{ {
struct sshbuf *b; struct sshbuf *b;
struct stat st; struct stat st;
pid_t pid; pid_t pid;
int i, r, to[2], from[2], status, sock = packet_get_connection_in(); int i, r, to[2], from[2], status, sock = ssh_packet_get_connection_in(ssh);
u_char rversion = 0, version = 2; u_char rversion = 0, version = 2;
void (*osigchld)(int); void (*osigchld)(int);
@ -1986,7 +1990,7 @@ userauth_hostbased(Authctxt *authctxt)
__func__, sshkey_ssh_name(private), fp); __func__, sshkey_ssh_name(private), fp);
/* figure out a name for the client host */ /* figure out a name for the client host */
if ((lname = get_local_name(packet_get_connection_in())) == NULL) { if ((lname = get_local_name(ssh_packet_get_connection_in(ssh))) == NULL) {
error("%s: cannot get local ipaddr/name", __func__); error("%s: cannot get local ipaddr/name", __func__);
goto out; goto out;
} }
@ -2020,9 +2024,8 @@ userauth_hostbased(Authctxt *authctxt)
#ifdef DEBUG_PK #ifdef DEBUG_PK
sshbuf_dump(b, stderr); sshbuf_dump(b, stderr);
#endif #endif
r = ssh_keysign(private, &sig, &siglen, if ((r = ssh_keysign(ssh, private, &sig, &siglen,
sshbuf_ptr(b), sshbuf_len(b)); sshbuf_ptr(b), sshbuf_len(b))) != 0) {
if (r != 0) {
error("sign using hostkey %s %s failed", error("sign using hostkey %s %s failed",
sshkey_ssh_name(private), fp); sshkey_ssh_name(private), fp);
goto out; goto out;