[sshconnect2.c]
     more cross checking if announced vs. used key type; ok stevesk@
This commit is contained in:
Damien Miller 2002-02-05 12:23:32 +11:00
parent 67f0bc043c
commit 68f45983b2
2 changed files with 13 additions and 4 deletions

View File

@ -69,6 +69,9 @@
generic callbacks are not really used, remove and generic callbacks are not really used, remove and
add a callback for msg of type SSH2_MSG_CHANNEL_OPEN_CONFIRMATION add a callback for msg of type SSH2_MSG_CHANNEL_OPEN_CONFIRMATION
ok djm@ ok djm@
- markus@cvs.openbsd.org 2002/02/03 17:59:23
[sshconnect2.c]
more cross checking if announced vs. used key type; ok stevesk@
20020130 20020130
- (djm) Delay PRNG seeding until we need it in ssh-keygen, from markus@ - (djm) Delay PRNG seeding until we need it in ssh-keygen, from markus@
@ -7471,4 +7474,4 @@
- Wrote replacements for strlcpy and mkdtemp - Wrote replacements for strlcpy and mkdtemp
- Released 1.0pre1 - Released 1.0pre1
$Id: ChangeLog,v 1.1817 2002/02/05 01:23:08 djm Exp $ $Id: ChangeLog,v 1.1818 2002/02/05 01:23:32 djm Exp $

View File

@ -23,7 +23,7 @@
*/ */
#include "includes.h" #include "includes.h"
RCSID("$OpenBSD: sshconnect2.c,v 1.94 2002/01/25 21:00:24 markus Exp $"); RCSID("$OpenBSD: sshconnect2.c,v 1.95 2002/02/03 17:59:23 markus Exp $");
#include "ssh.h" #include "ssh.h"
#include "ssh2.h" #include "ssh2.h"
@ -353,7 +353,7 @@ input_userauth_pk_ok(int type, u_int32_t seq, void *ctxt)
Authctxt *authctxt = ctxt; Authctxt *authctxt = ctxt;
Key *key = NULL; Key *key = NULL;
Buffer b; Buffer b;
int alen, blen, sent = 0; int pktype, alen, blen, sent = 0;
char *pkalg, *pkblob, *fp; char *pkalg, *pkblob, *fp;
if (authctxt == NULL) if (authctxt == NULL)
@ -381,7 +381,7 @@ input_userauth_pk_ok(int type, u_int32_t seq, void *ctxt)
debug("no last key or no sign cb"); debug("no last key or no sign cb");
break; break;
} }
if (key_type_from_name(pkalg) == KEY_UNSPEC) { if ((pktype = key_type_from_name(pkalg)) == KEY_UNSPEC) {
debug("unknown pkalg %s", pkalg); debug("unknown pkalg %s", pkalg);
break; break;
} }
@ -389,6 +389,12 @@ input_userauth_pk_ok(int type, u_int32_t seq, void *ctxt)
debug("no key from blob. pkalg %s", pkalg); debug("no key from blob. pkalg %s", pkalg);
break; break;
} }
if (key->type != pktype) {
error("input_userauth_pk_ok: type mismatch "
"for decoded key (received %d, expected %d)",
key->type, pktype);
break;
}
fp = key_fingerprint(key, SSH_FP_MD5, SSH_FP_HEX); fp = key_fingerprint(key, SSH_FP_MD5, SSH_FP_HEX);
debug2("input_userauth_pk_ok: fp %s", fp); debug2("input_userauth_pk_ok: fp %s", fp);
xfree(fp); xfree(fp);