switch auth2-passwd.c to modern APIs; ok djm@
authormarkus <markus@openbsd.org>
Tue, 30 May 2017 14:26:49 +0000 (14:26 +0000)
committermarkus <markus@openbsd.org>
Tue, 30 May 2017 14:26:49 +0000 (14:26 +0000)
usr.bin/ssh/auth2-passwd.c

index 4fa7dfb..cf456bc 100644 (file)
@@ -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.
  *
 #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"
@@ -48,24 +48,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);