diff options
author | des <des@FreeBSD.org> | 2014-04-12 20:22:59 +0000 |
---|---|---|
committer | des <des@FreeBSD.org> | 2014-04-12 20:22:59 +0000 |
commit | faff1e38d22d47a8228fbfe7a7e7ae44391d4ca5 (patch) | |
tree | 1869bb83deee7739b988ace790deca83cd513254 /crypto/openssh/ssh-ed25519.c | |
parent | 0918f176a2a27c20190030f7d90050e0b1a8e25c (diff) | |
download | FreeBSD-src-faff1e38d22d47a8228fbfe7a7e7ae44391d4ca5.zip FreeBSD-src-faff1e38d22d47a8228fbfe7a7e7ae44391d4ca5.tar.gz |
MFH (r263712): upgrade openssh to 6.6p1
MFH (r264308): restore p level in debugging output
Diffstat (limited to 'crypto/openssh/ssh-ed25519.c')
-rw-r--r-- | crypto/openssh/ssh-ed25519.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/crypto/openssh/ssh-ed25519.c b/crypto/openssh/ssh-ed25519.c index 1aedcf8..160d1f2 100644 --- a/crypto/openssh/ssh-ed25519.c +++ b/crypto/openssh/ssh-ed25519.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-ed25519.c,v 1.1 2013/12/06 13:39:49 markus Exp $ */ +/* $OpenBSD: ssh-ed25519.c,v 1.3 2014/02/23 20:03:42 djm Exp $ */ /* * Copyright (c) 2013 Markus Friedl <markus@openbsd.org> * @@ -21,6 +21,7 @@ #include "crypto_api.h" +#include <limits.h> #include <string.h> #include <stdarg.h> @@ -45,6 +46,11 @@ ssh_ed25519_sign(const Key *key, u_char **sigp, u_int *lenp, error("%s: no ED25519 key", __func__); return -1; } + + if (datalen >= UINT_MAX - crypto_sign_ed25519_BYTES) { + error("%s: datalen %u too long", __func__, datalen); + return -1; + } smlen = slen = datalen + crypto_sign_ed25519_BYTES; sig = xmalloc(slen); @@ -66,7 +72,7 @@ ssh_ed25519_sign(const Key *key, u_char **sigp, u_int *lenp, memcpy(*sigp, buffer_ptr(&b), len); } buffer_free(&b); - memset(sig, 's', slen); + explicit_bzero(sig, slen); free(sig); return 0; @@ -130,9 +136,9 @@ ssh_ed25519_verify(const Key *key, const u_char *signature, u_int signaturelen, } /* XXX compare 'm' and 'data' ? */ - memset(sigblob, 's', len); - memset(sm, 'S', smlen); - memset(m, 'm', smlen); /* NB. mlen may be invalid if ret != 0 */ + explicit_bzero(sigblob, len); + explicit_bzero(sm, smlen); + explicit_bzero(m, smlen); /* NB. mlen may be invalid if ret != 0 */ free(sigblob); free(sm); free(m); |