From 40aa0a12c49e8cf9e06e491e826a602bd3453b3c Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Fri, 12 Jun 2026 16:41:33 +0200 Subject: [PATCH] botan: Fix memory leak on failed ICV verification if not using in-place decryption Fixes: af26cc4d8542 ("botan: Add Botan plugin to libstrongswan") --- src/libstrongswan/plugins/botan/botan_aead.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libstrongswan/plugins/botan/botan_aead.c b/src/libstrongswan/plugins/botan/botan_aead.c index 2182a047c..43bf1bbe0 100644 --- a/src/libstrongswan/plugins/botan/botan_aead.c +++ b/src/libstrongswan/plugins/botan/botan_aead.c @@ -164,6 +164,7 @@ METHOD(aead_t, decrypt, bool, chunk_t *plain) { u_char *out; + bool valid; if (encrypted.len < this->icv_size) { @@ -177,8 +178,13 @@ METHOD(aead_t, decrypt, bool, *plain = chunk_alloc(encrypted.len); out = plain->ptr; } - return do_crypt(this, encrypted, assoc, iv, out, - BOTAN_CIPHER_INIT_FLAG_DECRYPT); + valid = do_crypt(this, encrypted, assoc, iv, out, + BOTAN_CIPHER_INIT_FLAG_DECRYPT); + if (!valid && plain) + { + chunk_free(plain); + } + return valid; } METHOD(aead_t, get_block_size, size_t,