upstream: f sshpkt functions fail, then password is not cleared
with freezero. Unconditionally call freezero to guarantee that password is removed from RAM. From tobias@ and c3h2_ctf via github PR#286, ok djm@ OpenBSD-Commit-ID: 6b093619c9515328e25b0f8093779c52402c89cd
This commit is contained in:
parent
5d3a77f4c5
commit
2c334fd36f
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: auth2-passwd.c,v 1.20 2021/12/19 22:12:07 djm Exp $ */
|
||||
/* $OpenBSD: auth2-passwd.c,v 1.21 2022/05/27 04:29:40 dtucker Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2000 Markus Friedl. All rights reserved.
|
||||
*
|
||||
|
@ -51,16 +51,18 @@ extern ServerOptions options;
|
|||
static int
|
||||
userauth_passwd(struct ssh *ssh, const char *method)
|
||||
{
|
||||
char *password;
|
||||
char *password = NULL;
|
||||
int authenticated = 0, r;
|
||||
u_char change;
|
||||
size_t len;
|
||||
size_t len = 0;
|
||||
|
||||
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)
|
||||
(r = sshpkt_get_end(ssh)) != 0) {
|
||||
freezero(password, len);
|
||||
fatal_fr(r, "parse packet");
|
||||
}
|
||||
|
||||
if (change)
|
||||
logit("password change not supported");
|
||||
|
|
Loading…
Reference in New Issue