diff --git a/library/gcm.c b/library/gcm.c index 8950360f6..3e1bc77d6 100644 --- a/library/gcm.c +++ b/library/gcm.c @@ -439,11 +439,17 @@ int gcm_auth_decrypt( gcm_context *ctx, const unsigned char *input, unsigned char *output ) { + int ret; unsigned char check_tag[16]; size_t i; int diff; - gcm_crypt_and_tag( ctx, GCM_DECRYPT, length, iv, iv_len, add, add_len, input, output, tag_len, check_tag ); + if( ( ret = gcm_crypt_and_tag( ctx, GCM_DECRYPT, length, + iv, iv_len, add, add_len, + input, output, tag_len, check_tag ) ) != 0 ) + { + return( ret ); + } /* Check tag in "constant-time" */ for( diff = 0, i = 0; i < tag_len; i++ )