Handle overlapping in/out buffers in crypto_sign()

This commit is contained in:
Frank Denis
2014-09-21 11:24:49 -07:00
parent d92d531ac0
commit 51dfcfc223
@@ -61,9 +61,10 @@ crypto_sign(unsigned char *sm, unsigned long long *smlen,
{
unsigned long long siglen;
memmove(sm + crypto_sign_ed25519_BYTES, m, mlen);
/* LCOV_EXCL_START */
if (crypto_sign_detached(sm, &siglen, m, mlen, sk) != 0 ||
siglen > crypto_sign_ed25519_BYTES) {
siglen != crypto_sign_ed25519_BYTES) {
if (smlen != NULL) {
*smlen = 0;
}
@@ -72,7 +73,6 @@ crypto_sign(unsigned char *sm, unsigned long long *smlen,
}
/* LCOV_EXCL_STOP */
memmove(sm + siglen, m, mlen);
if (smlen != NULL) {
*smlen = mlen + siglen;
}