From 1853248f0a7c7f7910539a5ecad8717f1ef2045c Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sat, 2 Apr 2016 12:08:41 +0200 Subject: [PATCH] Consistency --- .../aes256gcm/aesni/aead_aes256gcm_aesni.c | 1 + .../sodium/aead_chacha20poly1305.c | 34 ++++++++----------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c b/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c index 842d0649..96f6441f 100644 --- a/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c +++ b/src/libsodium/crypto_aead/aes256gcm/aesni/aead_aes256gcm_aesni.c @@ -787,6 +787,7 @@ crypto_aead_aes256gcm_decrypt_detached_afternm(unsigned char *m, unsigned char * d |= (mac[i] ^ (T[i] ^ accum[15 - i])); } if (d != 0) { + memset(m, 0, mlen); return -1; } } diff --git a/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c b/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c index fc1e5e6b..555b12b3 100644 --- a/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c +++ b/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c @@ -65,25 +65,22 @@ crypto_aead_chacha20poly1305_encrypt(unsigned char *c, const unsigned char *npub, const unsigned char *k) { - int ret; + unsigned long long clen = 0ULL; + int ret; -/* LCOV_EXCL_START */ -#ifdef UINT64_MAX if (mlen > UINT64_MAX - crypto_aead_chacha20poly1305_ABYTES) { - if (clen_p != NULL) { - *clen_p = 0ULL; - } - return -1; + abort(); /* LCOV_EXCL_LINE */ } -#endif -/* LCOV_EXCL_STOP */ ret = crypto_aead_chacha20poly1305_encrypt_detached(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k); if (clen_p != NULL) { - *clen_p = mlen + crypto_aead_chacha20poly1305_ABYTES; + if (ret == 0) { + clen = mlen + crypto_aead_chacha20poly1305_ABYTES; + } + *clen_p = clen; } return ret; } @@ -143,25 +140,22 @@ crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, const unsigned char *npub, const unsigned char *k) { - int ret; + unsigned long long clen = 0ULL; + int ret; -/* LCOV_EXCL_START */ -#ifdef UINT64_MAX if (mlen > UINT64_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES) { - if (clen_p != NULL) { - *clen_p = 0ULL; - } - return -1; + abort(); /* LCOV_EXCL_LINE */ } -#endif -/* LCOV_EXCL_STOP */ ret = crypto_aead_chacha20poly1305_ietf_encrypt_detached(c, c + mlen, NULL, m, mlen, ad, adlen, nsec, npub, k); if (clen_p != NULL) { - *clen_p = mlen + crypto_aead_chacha20poly1305_ietf_ABYTES; + if (ret == 0) { + clen = mlen + crypto_aead_chacha20poly1305_ietf_ABYTES; + } + *clen_p = clen; } return ret; }