Signed-off-by: Alexander Sosedkin <asosedkin@redhat.com>
return GNUTLS_E_MEMORY_ERROR;
}
- if (encr_size < plain_size + tag_size) {
+ if (encr_size - tag_size < plain_size) {
ret = GNUTLS_E_SHORT_MEMORY_BUFFER;
gnutls_assert();
goto end;
/* the GCM in kernel will place the tag after the
* encrypted data.
*/
- if (dst_size < src_size + GCM_BLOCK_SIZE)
+ if (dst_size - GCM_BLOCK_SIZE < src_size)
return gnutls_assert_val(GNUTLS_E_SHORT_MEMORY_BUFFER);
ctx->cryp.len = src_size;
void *encr, size_t encr_size)
{
/* proper AEAD cipher */
- if (unlikely(encr_size < plain_size + tag_size))
+ if (unlikely(encr_size - tag_size < plain_size))
return gnutls_assert_val(GNUTLS_E_SHORT_MEMORY_BUFFER);
aes_gcm_setiv(ctx, nonce, nonce_size);