| Index: net/quic/crypto/aead_base_decrypter_openssl.cc
|
| diff --git a/net/quic/crypto/aead_base_decrypter_openssl.cc b/net/quic/crypto/aead_base_decrypter_openssl.cc
|
| index fad0fe1b5204608b02cd8a2a0efc3babd5f2ba8e..2190bf6966e32c8847a82191865d5a0e00a5dee6 100644
|
| --- a/net/quic/crypto/aead_base_decrypter_openssl.cc
|
| +++ b/net/quic/crypto/aead_base_decrypter_openssl.cc
|
| @@ -86,18 +86,21 @@ bool AeadBaseDecrypter::Decrypt(StringPiece nonce,
|
| return false;
|
| }
|
|
|
| - if (!EVP_AEAD_CTX_open(
|
| - ctx_.get(), output, output_length, ciphertext.size(),
|
| + ssize_t len = EVP_AEAD_CTX_open(
|
| + ctx_.get(), output, ciphertext.size(),
|
| reinterpret_cast<const uint8_t*>(nonce.data()), nonce.size(),
|
| reinterpret_cast<const uint8_t*>(ciphertext.data()), ciphertext.size(),
|
| reinterpret_cast<const uint8_t*>(associated_data.data()),
|
| - associated_data.size())) {
|
| + associated_data.size());
|
| +
|
| + if (len < 0) {
|
| // Because QuicFramer does trial decryption, decryption errors are expected
|
| // when encryption level changes. So we don't log decryption errors.
|
| ClearOpenSslErrors();
|
| return false;
|
| }
|
|
|
| + *output_length = len;
|
| return true;
|
| }
|
|
|
|
|