diff options
author | markus@openbsd.org <markus@openbsd.org> | 2017-05-30 14:26:49 +0000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2017-05-31 10:50:05 +1000 |
commit | 60306b2d2f029f91927c6aa7c8e08068519a0fa2 (patch) | |
tree | b1fc6de74bb47a2f148773f3a8e1b81500637c28 /auth2-passwd.c | |
parent | eb76698b91338bd798c978d4db2d6af624d185e4 (diff) |
upstream commit
switch auth2-passwd.c to modern APIs; ok djm@
Upstream-ID: cba0a8b72b4f97adfb7e3b3fd2f8ba3159981fc7
Diffstat (limited to 'auth2-passwd.c')
-rw-r--r-- | auth2-passwd.c | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/auth2-passwd.c b/auth2-passwd.c index b638e871..d36b0cba 100644 --- a/auth2-passwd.c +++ b/auth2-passwd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: auth2-passwd.c,v 1.12 2014/07/15 15:54:14 millert Exp $ */ +/* $OpenBSD: auth2-passwd.c,v 1.13 2017/05/30 14:26:49 markus Exp $ */ /* * Copyright (c) 2000 Markus Friedl. All rights reserved. * @@ -30,10 +30,10 @@ #include <string.h> #include <stdarg.h> -#include "xmalloc.h" #include "packet.h" +#include "ssherr.h" #include "log.h" -#include "key.h" +#include "sshkey.h" #include "hostfile.h" #include "auth.h" #include "buffer.h" @@ -50,24 +50,21 @@ extern ServerOptions options; static int userauth_passwd(Authctxt *authctxt) { - char *password, *newpass; - int authenticated = 0; - int change; - u_int len, newlen; + struct ssh *ssh = active_state; /* XXX */ + char *password; + int authenticated = 0, r; + u_char change; + size_t len; - change = packet_get_char(); - password = packet_get_string(&len); - if (change) { - /* discard new password from packet */ - newpass = packet_get_string(&newlen); - explicit_bzero(newpass, newlen); - free(newpass); - } - packet_check_eom(); + if ((r = sshpkt_get_u8(ssh, &change)) != 0 || + (r = sshpkt_get_cstring(ssh, &password, &len)) != 0 || + (change && (r = sshpkt_get_cstring(ssh, NULL, NULL)) != 0) || + (r = sshpkt_get_end(ssh)) != 0) + fatal("%s: %s", __func__, ssh_err(r)); if (change) logit("password change not supported"); - else if (PRIVSEP(auth_password(authctxt, password)) == 1) + else if (PRIVSEP(auth_password(ssh->authctxt, password)) == 1) authenticated = 1; explicit_bzero(password, len); free(password); |